15

文字列を比較演算子で比較しています。

以下の2つの比較とその結果について何らかの説明が必要です。

if('ai' > 'i')
{
    echo 'Yes';
}
else
{
    echo 'No';
}

output: No

なぜこれらはこのように出力するのですか?

if('ia' > 'i')
{
    echo 'Yes';
}
else
{
    echo 'No';
}

Output: Yes

繰り返しますが、なぜですか?

いくつかの基本を忘れたかもしれませんが、この出力を理解するには、これらの比較例の説明が本当に必要です。

4

4 に答える 4

19

PHPは、アルファベット順に基づく大なり記号と小なり記号を使用してアルファ文字列を比較します。

  • 最初の例では、アルファベット順でai前に来るので、 (より大きい)iのテストは次のようになります-順序の早い方は、「より大きい」ではなく「より小さい」と見なされます。>false

  • 2番目の例では、はアルファベット順のia後に来るので、 (より大きい)iのテストは-後で「より大きい」と見なされる順序になります。>true

于 2012-10-15T02:57:26.153 に答える
6

coderabbiの答えを拡張するには:

これは、一部のアプリケーションで番号で注文し、次のような結果が得られる場合と同じタイプのロジックです。

  • 0
  • 1
  • 105
  • 11
  • 2
  • 21
  • 3
  • 333
  • 34

これは文字列の長さに基づくのではなく、文字列の順序で各文字に基づいています。

于 2012-10-15T03:04:52.780 に答える
1

PHPの<and>比較演算子は、文字列の最初の文字を比較してから、文字列に続く他の文字を比較します。

したがって、最初の式ai(最初の文字列)とi 2番目の文字列)aは、 iと比較して文字列の最初の文字です。理由。>falsetrue

ただし、実際に2つの長い文字列値を多くの文字と比較する必要がある場合は、substr_compareメソッドを使用してみてください。

substr_compare("abcde", "bc", 1, 2);

このサンプルでは、​​比較する2つの文字列があり、1はオフセット開始位置、2はそれらの文字列の右側と比較する文字数を表します。-1は、最初の文字列の終わりからのオフセット開始を意味します。たとえば、次のようなことを行います。

substr_compare("string1", "string2", 0, length);

また、strcmp()の使用も検討してください。つまりstrcmp("string1", "string2", length)、長さは2つの文字列から比較する文字数です。

于 2012-10-15T03:21:41.717 に答える
1

両方の文字列数値形式の場合、PHPは文字列を数値に変換し、値を変換します。

数値を文字列と比較する場合、または比較に数値文字列が含まれる場合、各文字列は数値に変換され、比較は数値で実行されます。これらのルールは、switchステートメントにも適用されます。比較が===または!==の場合、型と値の比較が含まれるため、型変換は行われません。

参照:比較演算子

于 2019-12-02T08:47:18.240 に答える