次のようないくつかの文字列の場合:
inf1
inf3
inf12
strcmp() 関数を使用して比較する場合、順序は次のようになります:
inf1
inf12
inf3
しかし、これは明らかに私たちが望んでいることではありません。一般に、この解決策は、inf01 inf03 inf12 のように、数値の前に 0 を追加することです。この0を加えずに、私たちが望む実際の順序を自然な順序に従って並べることは可能でしょうか?
これを行うために PHP4 には 2 つの関数が提供されています:
int strnatcasecmp (string str1, string str2)
int strnatcmp(string str1, string str2)
サポートされるバージョンは次のとおりです: PHP4 >= 4.0 RC2
説明は次のとおりです:
str1 str2 を自然な順序でソートします。
戻り値 戻り値 =0 は str1 が str2 に等しいことを意味し、
戻り値 >0 は str1 が str2 より大きいことを意味します。
例は次のとおりです:
$str=array("a","a0","a3","a2","a10","a18","a24"); =count ($str);
echo "total=".$k."
";
echo "
strnatcmp で並べ替える
";
if (strnatcmp($str[$i-1],$str[$i])>0){
$tmp=$str[$i-1]
$str[$i-1]=$str; [$ i]; $str[$i]=$tmp;
}
print_r($str);
echo "
strcmp
for($i =1 ;$iif(strcmp($str[$i-1],$str[$i])>0){
$tmp=$str[$i-1] ;
} |