12

この関数に関するPHPのドキュメントは少しまばらで、この関数はASCII値を比較するので...

echo strcmp('hello', 'hello');
//outputs 0 as expected - strings are equal.
echo '<hr />';

echo strcmp('Hello', 'hello');
//outputs -32, a negative number is expected as 
//uppercase H has a lower ASCII value than lowercase h.
echo '<hr />';

echo strcmp('60', '100');
//outputs 5.

最後の例は私を混乱させています。なぜ正の数を出力しているのかわかりません。

  • 0のASCII値=48
  • 1のASCII値=49
  • 6のASCII値=54

  • '60'の合計ASCII値=(54 + 48)= 102

  • '100'の合計ASCII値=(49 + 48 + 48)= 145

strcmp()関数は、ASCII値と文字列の長さ「100」が「60」より大きいように見えても、「60」は「100」より「大きい」と言っています。

誰かが理由を説明できますか?

ありがとう

4

3 に答える 3

13

strcmp()文字列間の最初の一致しない文字の差を返します。

6-1は5です。

それを見ると、おそらく文字や数字は表示されていません。数字だけが表示されています。

于 2012-02-15T07:43:48.057 に答える
8

最初の違いで止まるのでstrcmp()見つけます。したがって、ASCII値「1」とASCII値「6」の違い

于 2012-02-15T07:45:03.707 に答える
5

6は1より5「大きい」です。これは字句比較です。最初の文字は異なります。そこで比較が停止します。

于 2012-02-15T07:45:22.833 に答える