strcasecmp( string $str1, string $str2 )
は、文字列を比較する組み込み関数。大文字と小文字は、区別しない。
usort()、uksort()、uasort()などの配列をソートする関数の、コールバック関数に「strcasecmp」を指定し、配列を標準ソートすることもできる。
strcmp( string $str1, string $str2 )と似ているが、strcasecmp( string $str1, string $str2 )
は、大文字と小文字を区別しない。
定義
パラメータ
- 文字列型 $str1
「$str2」と比較したい文字列を指定する。
- 文字列型 $str2
「$str1」と比較したい文字列を指定する。
戻り値
「$str1」と「$str2」の文字列を比較し、「$str1」が「$str2」より大きければ「正数」、「$str1」と「$str2」が等しければ「0」、「$str1」が「$str2」より小さければ「負数」を返す。
- $str1 > $str2 : 正数
- $str1 = $str2 : 0
- $str1 < $str2 : 負数
構文
文字列比較
「文字列1」と「文字列2」の文字列を比較し、「文字列1」が「文字列2」より大きければ「正数」、「文字列1」と「文字列2」が等しければ「0」、「文字列1」が「文字列2」より小さければ「負数」を返す。
usortのコールバック関数に使い、配列を標準ソート
「配列」の要素を、標準ソートで並べ替える。
サンプル
数字を文字列比較
自然順アルゴリズムの比較ではなく、標準比較なので、「10」と「5」の文字列を比較すると、「1」と「5」を比較し、「10」の方が小さいと判断する。
echo strcasecmp( 10, 5 ) . "<br />";
echo strcasecmp( 10, 10 ) . "<br />";
echo strcasecmp( 5, 10 ) . "<br />";
?>
↓↓↓出力結果↓↓↓
0
4
アルファベットを文字列比較
大文字と小文字を区別しない点に注目。
echo strcasecmp( "white", "black" ) . "<br />";
echo strcasecmp( "white", "white" ) . "<br />";
echo strcasecmp( "white", "WHITE" ) . "<br />";
echo strcasecmp( "black", "white" ) . "<br />";
?>
↓↓↓出力結果↓↓↓
0
0
-21
ひらがなを文字列比較
echo strcasecmp( "やまだ", "たかはし" ) . "<br />";
echo strcasecmp( "やまだ", "やまだ" ) . "<br />";
echo strcasecmp( "たかはし", "やまだ" ) . "<br />";
?>
↓↓↓出力結果↓↓↓
0
-1
数字を標準ソート
<?php
$arrayA = array( 2, 10, 7, 500, 70 );
usort( $arrayA, "strcasecmp" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => 10
[1] => 2
[2] => 500
[3] => 7
[4] => 70
)
アルファベットを標準ソート
<?php
$arrayA = array( "White", "Black", "Red", "Blue", "Green" );
usort( $arrayA, "strcasecmp" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => Black
[1] => Blue
[2] => Green
[3] => Red
[4] => White
)
ひらがなを標準ソート
<?php
$arrayA = array( "こ", "か", "た", "わ", "い" );
usort( $arrayA, "strcasecmp" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => い
[1] => か
[2] => こ
[3] => た
[4] => わ
)
カタカナを標準ソート
<?php
$arrayA = array( "コ", "カ", "タ", "ワ", "イ" );
usort( $arrayA, "strcasecmp" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => イ
[1] => カ
[2] => コ
[3] => タ
[4] => ワ
)
アルファベットと数字の文字列を標準ソート
<?php
$arrayA = array( "img2.png", "img10.png", "img7.png", "img500.png", "img70.png" );
usort( $arrayA, "strcasecmp" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => img10.png
[1] => img2.png
[2] => img500.png
[3] => img7.png
[4] => img70.png
)
数字の標準ソートと自然順ソートの比較
<?php
$arrayA = $arrayB = array( 2, 10, 7, 500, 70 );
echo "標準ソート\n";
usort( $arrayA, "strcasecmp" );
print_r( $arrayA );
echo "\n自然順ソート\n";
usort( $arrayB, "strnatcasecmp" );
print_r( $arrayB );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[0] => 10
[1] => 2
[2] => 500
[3] => 7
[4] => 70
)
自然順ソート
Array
(
[0] => 2
[1] => 7
[2] => 10
[3] => 70
[4] => 500
)
アルファベットと数字の文字列の標準ソートと自然順ソートの比較
<?php
$arrayA = $arrayB = array( "img2.png", "img10.png", "img7.png", "img500.png", "img70.png" );
echo "標準ソート\n";
usort( $arrayA, "strcasecmp" );
print_r( $arrayA );
echo "\n自然順ソート\n";
usort( $arrayB, "strnatcasecmp" );
print_r( $arrayB );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[0] => img10.png
[1] => img2.png
[2] => img500.png
[3] => img7.png
[4] => img70.png
)
自然順ソート
Array
(
[0] => img2.png
[1] => img7.png
[2] => img10.png
[3] => img70.png
[4] => img500.png
)