文字列の比較は、プログラミング言語の文字列処理機能の重要な機能の 1 つです。比較に比較演算子 (==、b11f4d90b3f399d78381003a23252bc2) を使用することに加えて、PHP は、より複雑な文字列比較を実行できる一連の比較関数も提供します。 strcmp()、strcasecmp()、strnatcmp() などの関数。
1. バイト順で文字列を比較する
バイト順で文字列を比較するには、strcmp() 関数と strcasecmp() 関数を使用できます。比較の際、文字列内の文字の大文字と小文字を無視できます。これら 2 つの関数のプロトタイプは次のとおりです。
in strcmp(string str1,string str2) //区分字符串中字母大小写地比较 int strcasecmp(string str1,string str2) //忽略字符串中字母大小写地比较
これら 2 つの関数の使用法は似ており、どちらも比較のために 2 つの文字列パラメーターを渡す必要があります。入力文字列 str1 と str2 を、バイトの ASCII 値に従って 2 つの文字列の最初のバイトから比較できます。それらが等しい場合、比較が完了するまで次のバイトに進みます。次の 3 つの値のいずれかを返します:
1. str1 が str2 と等しい場合は、0 を返します。
2. str1 が str2 より大きい場合、1 を返します。
3. str1 が str2 より小さい場合は、-1 を返します。
次のプログラムでは、2 つの比較文字列のサイズは、比較後の戻り値によって決まります。 strcmp() 関数を使用して文字列内の大文字と小文字を区別し、strcasecmp() 関数を使用して文字列内の文字の大文字と小文字の比較を無視します。コードは次のとおりです:
<?php $username = "Admin"; $password = "lampBrother"; //不区分大小写的比较,如果两个字符串相等返回0 if(strcasecmp($userName,"admin")== 0){ echo "用户名存在"; } //将两个比较的字符串相应的函数转成全大写或全小写后,也可以实现不区分大小写的比较 if(strcasecmp(strtolower($userName),strtolower("admin")) == 0){ echo "用户名存在"; } //区分字符串中字母的大小写比较 switch(strcmp($password,"lampbrother")){ case 0: echo "两个字符串相等<br>"; break; case 1: echo "第一个字符串大于第二个字符串<br>"; break; case -1: echo "第一个字符串小于第二个字符串<br>"; break; } ?>
2. 自然な並べ替えによる文字列の比較
辞書のバイト順に基づく比較に加えて、PHP では文字列の比較も提供しています。 「自然順序付け」法に従って比較されます。いわゆる自然ソートとは、人々の日常生活における思考習慣に従ってソートすること、つまり、文字列内の数値部分を数値の大小に応じて比較することを指します。
たとえば、バイト単位で比較すると、「4」は「33」より大きくなります。「4」は「33」の最初の文字より大きく、自然な並べ替え規則によれば、「33」は次のようになります。 「4」より大きい。 strnatcmp() 関数を使用して、自然な並べ替えで 2 つの文字列を比較します。この関数は大文字と小文字が区別され、使用形式は strcmp() 関数と似ています。
次の例では、バブル ソート方法を使用して、2 つの比較方法により配列内の数値を含むファイル名を並べ替えます。
<?php //定义一个包含数字值的数组 $files = array("file11.txt","file22.txt","file1.txt","file2.txt"); function mySort($arr,$select = false){ for($i=0;$i<count($arr);$i++){ for($j;$j<count($arr)-1;$j++){ //如果第二个参数为ture则使用strcmp()函数比较大小 if($select){ //前后两个值比较结果大于0则交换位置 if(strcmp($arr[$j],$arr[j+1])>0){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; } //如果第二个参数为false则使用strnatcmp()函数比较大小 }else{ //如果比较结果大于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() 関数と同じです。
推奨チュートリアル: PHP ビデオ チュートリアル
以上がPHPで2つの文字列のサイズを比較する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。