2 つの文字列が等しいかどうかを比較する最も一般的な方法は、「===」を使用して判断することです。「==」との違いについては、簡単に言えば、前者は「同一」の型も必要であることを強調しています。同じ; 後者は「等しい」が必要です。値は同じです。[1] を参照してください。または、strcmp を使用して判断しますが、これにより 2 つの文字列が等しいかどうかはわかりますが、どこが異なるかはわかりません。私のアイデアは、単一の文字列を文字 (文字) に分割して、比較で違いがどこにあるのかを正確に把握できるようにすることです。文字列を分割するには、「str_split」を使用します。構文については、[2] を参照してください。次に、結果の配列を出力します。利点は、偶数のスペースが配列の要素として使用されることです。前の例では、最初の文字列には 2 つのスペースが含まれていたのに対し、後の文字列には 1 つしかスペースが含まれていなかったためです。ただし、出力時の表示は同じです。 「explode」や「preg_split」などの他の区切り文字に従って分割することもできます
一般に、2 つのオブジェクトが等しいかどうかを比較するには、!=、== を使用できます。これらが 2 つのオブジェクトである理由は、それらがすべて文字列である必要はなく、整数などの場合もあります。たとえば
$a = "ジョー";
$b = "ジェリー";
if ($a != $b)
{
エコー「等しくない」;
}
それ以外
{
エコー「等しい」;
}
比較に !==,=== (追加の等号が表示されます) を使用する場合、true を返すには 2 つのオブジェクトの型が厳密に等しい必要があります。それ以外の場合は ==,!= を使用すると、文字列は次のようになります。比較のために、対応する型に自動的に変換されます。
22 == "22" // true を返します;
; 22 === "22" // false を返します
このため、私たちのプログラムでは予期せぬ「事故」が頻繁に発生します:
0 == "愛しています" // true を返します
;
1 == "1 愛しています";// true を返します
PHP チュートリアルには、strcmp、strcasecmp、strncasecmp()、strncmp() という文字列比較のための関数のセットがあり、前者が後者より大きい場合は 0 より大きい整数が返されます。後者よりも、2 つが小さい場合は 0 より小さい整数が返され、2 つが等しい場合は 0 が返されます。これらの比較の原則は他の言語の規則と同じです。
strcmp は、大文字と小文字を区別する (つまり、大文字と小文字を区別する) 文字列比較用です。
echo strcmp("abcdd", "abcde"); // "b" と "b" を比較して 1 (>0) を返します
echo strcasecmp("abcdd", "abcde"); // "d" と "e" を比較して -1 (
strncmp は、文字列の先頭から開始して文字列の一部を比較するために使用されます。 3 番目のパラメーターは比較する長さです。 echo strncmp("abcdd", "abcde", 3); // abc と abc を比較して 1 (>0) を返します
strncasecmp は、文字列の先頭から始めて、大文字と小文字を区別しない方法で文字列の一部を比較するために使用されます。
もう 1 つの状況は、単に文字列のサイズを比較するだけでは、事前に決められたニーズを満たすことができないということです。たとえば、通常 10.gif は 5.gif よりも大きくなりますが、上記の関数を適用すると -1 が返されます。これは、10 .gif が返されることを意味します。この状況に対して、PHP は 2 つの対照的な関数 strnatcmp と strnatcasecmp を提供します。
echo strnatcasecmp("10.gif", "5.gif") // 1 (>0) を返します