PHPの文字列比較関数strcmp()とstrcasecmp()、strcmpstrcasecmpの使い方のまとめ
文字列の比較は、あらゆるプログラミング言語の文字列処理機能における重要な機能の 1 つです。比較に比較演算子 (==、<、または >) を使用することに加えて、PHP は、より複雑な文字列比較を実行できる一連の比較関数も提供します。 strcmp()、strcasecmp()、strnatcmp() などの関数。
1. バイトオーダーでの文字列比較
文字列をバイト順に比較するには、strcmp() と strcasecmp() の 2 つの関数を使用できます。関数 strcasecmp() は、文字列内の文字の大文字と小文字を無視して比較できます。これら 2 つの関数のプロトタイプは次のとおりです:
コードをコピーします コードは次のとおりです:
in strcmp(string str1,string str2) //文字列内の文字を大文字と小文字を区別して比較します
int strcasecmp(string str1,string str2) //文字列内の文字の大文字と小文字の比較を無視します
これら 2 つの関数の使用法は似ており、どちらも比較のために 2 つの文字列パラメータを渡す必要があります。入力文字列 str1 と str2 を、バイトの ASCII 値に従って最初のバイトから比較できます。それらが等しい場合、比較が完了するまで次のバイトに進みます。次の 3 つの値のいずれかを返します:
★str1とstr2が等しい場合は0を返します。
★str1がstr2より大きい場合は1を返します。
★str1がstr2より小さい場合は-1を返します。
以下のプログラムでは、比較される 2 つの文字列のサイズは、比較後の戻り値によって決定されます。 strcmp() 関数を使用して文字列内の大文字と小文字を区別し、strcasecmp() 関数を使用して文字列内の文字の大文字と小文字の比較を無視します。もちろん実用的な意味はありません。コードは次のようになります:
コードをコピーします コードは次のとおりです:
$username = "管理者";
$password = "ランプブラザー";
//大文字と小文字を区別しない比較。2 つの文字列が等しい場合は 0 を返します
if(strcasecmp($userName,"admin")== 0){
echo "ユーザー名が存在します";
}
// 比較される 2 つの文字列の対応する関数をすべて大文字またはすべて小文字に変換した後、大文字と小文字を区別しない比較も実現できます
if(strcasecmp(strto lower($userName),strto lower("admin")) == 0){
echo "ユーザー名が存在します";
}
//文字列内の文字の大文字と小文字の比較を区別します
switch(strcmp($password,"ランプブラザー")){
ケース0:
echo "2 つの文字列は等しい
";
ケース1:
echo "最初の文字列は 2 番目の文字列より大きいです
";
ケース-1:
echo "最初の文字列は 2 番目の文字列より小さいです
";
}
?>
2. 自然な順序による文字列の比較
辞書のバイト順に従った比較に加えて、PHP は「自然ソート」方法に従った文字列の比較も提供します。いわゆる自然ソートとは、人々の日常生活における思考習慣に従ってソートすること、つまり、文字列内の数値部分を数値の大小に応じて比較することを指します。たとえば、バイト単位で比較すると、「4」は「33」より大きくなります。これは、「4」が「33」の最初の文字より大きく、自然な並べ替え規則によれば、「33」が「4」より大きいためです。 strnatcmp() 関数を使用して、2 つの文字列を自然な並べ替えで比較します。この関数は大文字と小文字を区別し、その使用形式は strcmp() 関数と似ています。
次の例では、バブル ソート方法を使用して、2 つの比較方法を通じて配列内の数値を含むファイル名を並べ替えます。コードは次のようになります:
コードをコピーします
コードは次のとおりです:
//数値を含む配列を定義します
$files = array("file11.txt","file22.txt","file1.txt","file2.txt");
関数 mySort($arr,$select = false){
for($i=0;$i
for($j;$j
// 2 番目のパラメータが true の場合、strcmp() 関数を使用してサイズを比較します
if($select){
// 2 つの値の比較結果が 0 より大きい場合、位置が入れ替わります
If(strcmp($arr[$j],$arr[j+1])>0){
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}
// 2 番目のパラメータが false の場合、strnatcmp() 関数を使用してサイズを比較します
}その他{
// 比較結果が 0 より大きい場合、位置を入れ替えます
If(strnatcmp($arr[$j],$arr[$j+1])>0){
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}
}
}
}
return $arr; //ソートされた配列
}
print_r(mySort($files,true)); // 辞書順に並べ替える場合に選択します: file1.txt file11.txt file2.txt file22.txt
print_r(mySort($files,false)); //自然な順序で並べ替えることを選択します: file1.txt file2.txt file11.txt file22.txt
?>
PHP では、この関数の大文字と小文字を無視するバージョンの strnatcasecmp() も提供されています。使用方法は strnatcmp() 関数と同じです。
http://www.bkjia.com/PHPjc/914064.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/914064.html技術記事 PHP 文字列比較関数 strcmp() および strcasecmp() の使用法の概要 strcmpstrcasecmp 文字列比較は、あらゆるプログラミング言語の文字列処理関数の重要な機能の 1 つです。 PHP の...
に加えて