PHPで文字列を比較するときはstrcmp()を使います。
文字列を比較する
strcmp()の記述方法は以下のとおりです。
1 |
strcmp(文字列1, 文字列2) |
strcmp()では引数に渡した「文字列1」と「文字列2」が比較されます。
「文字列1」が「文字列2」 よりも小さければ負の整数を、「文字列1」が 「文字列2」よりも大きければ正の整数を、 等しければ0を返します。
また、大文字と小文字は区別されます。もし区別したくない場合は、strcasecmp()を使用してください。
以下は文字列「1st」と「1st」という文字列を比較した例です。
1 2 3 4 5 6 7 |
<?php if ( strcmp("1st", "1st") == 0 ) { echo "同じ文字列です\n"; } else { echo "異なる文字列です\n"; } ?> |
上のプログラムを実行すると「同じ文字列です」と表示されます。
次の例は文字列「1st」と「2nd」という文字列を比較したものです。
1 2 3 4 5 6 7 |
<?php if ( strcmp("1st", "2nd") == 0 ) { echo "同じ文字列です\n"; } else { echo "異なる文字列です\n"; } ?> |
上のプログラムを実行すると「異なる同じ文字列です」と表示されます。
「==」を使って文字列を比較する
他のプログラミング言語では「==」を使って文字列を比較することがあります。
もしPHPで「==」を使って文字列を比較してみるとどうなるでしょうか。
1 2 3 4 5 6 |
<?php var_dump(0 == "a"); // 0 == 0 -> true var_dump("1" == "01"); // 1 == 1 -> true var_dump("10" == "1e1"); // 10 == 10 -> true var_dump(100 == "1e2"); // 100 == 100 -> true ?> |
引用:http://www.php.net/manual/ja/language.operators.comparison.php
上の例ではすべて異なるもの同士を比較しているのにも関わらず、すべて結果は「true」になります。 これはPHPでは「==」で比較する場合、文字列に数値形式のものが含まれていると、文字列が数値に変換され、数値として比較されるからです。
以上のことから、特別な理由がない限り文字列を比較するときはstrcmp()を使った方がいいでしょう。