[ad_1]
PHP spaceship operator は文字列に対してどのように機能しますか?
var_dump("A" <=> "Z"); // int(-1)
結果は「-1」ですが、その理由を教えてください。
「A」はアルファベットの最初の文字で、「Z」は最後の文字です。
では、この結果が得られた理由は何ですか?
宇宙船が整数、ブール値などの他のPHPデータ型でどのように機能するかは知っていますが、PHP文字列ではわかりません。
私が試したこと:
var_dump 関数を使用して値と型を出力しましたが、”-1″ が表示されました。その理由を教えてください。
解決策 3
見る PHP: 比較演算子 – マニュアル[^].
解決策 4
宇宙船オペレーターは、次の場所で比較を行います。
- < : 未満
- = : 等しい
- > : より大きい
返される値は、比較の結果を示す数値です。 文字列値については、 PHP: strcmp – マニュアル[^] ただし、値が -1、0、および 1 に制限されていることを除きます。ドキュメント自体では、これら 3 つの値のいずれかのみを返す必要があると規定されています。 実際の完全に比較された値が必要な場合は、使用します strcmp
代わりは。
解決策 1
実際、これは PHP7 の新機能です。 文字列は文字のASCIIに従ってそこで機能しています。 これは、情報交換のための米国標準コードを意味します。
したがって、「A」文字には、ASCII によるとこの値 (65) があります。
また、「Z」文字も、ASCII に従ってこの値 (90) を持ちます。
したがって、A(65) は Z(90) より小さいため、この結果 int(-1) が表示されます
解決策 2
見積もり:それは私に-1を示しています、なぜですか? A は最初の文字で、Z は最後の文字です。
まさにこのように設計されているからです。
“A” は “Z” よりも先に来るので、”A” は “Z” よりも小さくなります (数字の場合と同じ動作です。たとえば、1 が 5 より先に来ます)。 見る PHP: 新機能 – マニュアル[^]
解決策 6
これは PHP 7 の新機能です。詳しくは PHP マニュアルを参照してください。
[ad_2]
コメント