【解決方法】PHP spaceship operator は文字列に対してどのように機能しますか?

プログラミングQA

[ad_1]

PHP spaceship operator は文字列に対してどのように機能しますか?

PHP
var_dump("A" <=> "Z"); // int(-1)

結果は「-1」ですが、その理由を教えてください。
「A」はアルファベットの最初の文字で、「Z」は最後の文字です。

では、この結果が得られた理由は何ですか?

宇宙船が整数、ブール値などの他のPHPデータ型でどのように機能するかは知っていますが、PHP文字列ではわかりません。

私が試したこと:

var_dump 関数を使用して値と型を出力しましたが、”-1″ が表示されました。その理由を教えてください。

解決策 3

解決策 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]

コメント

タイトルとURLをコピーしました