strncasecmp( string $str1, string $str2, int $len )
は、文字列「$str1」と文字列「$str2」を、「$len」に指定した文字数分だけ、比較する組み込み関数。大文字と小文字は、区別しない。
usort()、uksort()、uasort()などの配列をソートする関数の、コールバック関数の中で、「strncasecmp」を使い、配列を標準ソートすることもできる。
strncmp( string $str1, string $str2, int $len )と似ているが、strncasecmp( string $str1, string $str2, int $len )
は、大文字と小文字を区別しない。
定義
パラメータ
- 文字列型 $str1
「$str2」と比較したい文字列を指定する。
- 文字列型 $str2
「$str1」と比較したい文字列を指定する。
- 整数型 $len
比較する文字数を指定する。
戻り値
「$str1」と「$str2」の文字列を、「$len」に指定した文字数分だけ比較し、「$str1」が「$str2」より大きければ「正数」、「$str1」と「$str2」が等しければ「0」、「$str1」が「$str2」より小さければ「負数」を返す。
- $str1 > $str2 : 正数
- $str1 = $str2 : 0
- $str1 < $str2 : 負数
構文
文字列比較
「文字列1」と「文字列2」の文字列を、「文字数」に指定した文字数分だけ比較し、「文字列1」が「文字列2」より大きければ「正数」、「文字列1」と「文字列2」が等しければ「0」、「文字列1」が「文字列2」より小さければ「負数」を返す。
usortのコールバック関数の中で使い、配列を標準ソート
return strncasecmp( 文字列1, 文字列2, 文字数 );
}
usort( 配列, コールバック関数 );
「配列」の要素を、「文字数」に指定した文字数分だけ比較し、標準ソートで並べ替える。
サンプル
数字を文字列比較
「123」と「120」の文字列は、1文字だけ比較すると「1」で同じ、2文字だけ比較すると「12」で同じ、3文字比較すると相違点が現れる。
echo strncasecmp( 123, 120, 1 ) . "<br />";
echo strncasecmp( 123, 120, 2 ) . "<br />";
echo strncasecmp( 123, 120, 3 ) . "<br />";
echo strncasecmp( 123, 123, 3 ) . "<br />";
echo strncasecmp( 120, 123, 3 ) . "<br />";
?>
↓↓↓出力結果↓↓↓
0
3
0
-3
アルファベットを文字列比較
大文字と小文字を区別しない点に注目。
echo strncasecmp( "blue", "black", 1 ) . "<br />";
echo strncasecmp( "blue", "black", 2 ) . "<br />";
echo strncasecmp( "blue", "black", 3 ) . "<br />";
echo strncasecmp( "blue", "BLACK", 1 ) . "<br />";
?>
↓↓↓出力結果↓↓↓
0
20
0
ひらがなを文字列比較
echo strncasecmp( "たかだ", "たかはし", 3 ) . "<br />";
echo strncasecmp( "たかだ", "たかはし", 6 ) . "<br />";
echo strncasecmp( "たかだ", "たかはし", 9 ) . "<br />";
echo strncasecmp( "たかだ", "たかはし", 12 ) . "<br />";
?>
↓↓↓出力結果↓↓↓
0
-15
-15
数字を標準ソート
<?php
function compareA( $a, $b ) {
return strncasecmp( $a, $b, 1 );
}
$arrayA = array( 2, 10, 7, 500, 70 );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => 10
[1] => 2
[2] => 500
[3] => 70
[4] => 7
)
アルファベットを標準ソート
<?php
function compareA( $a, $b ) {
return strncasecmp( $a, $b, 2 );
}
$arrayA = array( "White", "Black", "Red", "Blue", "Green" );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => Blue
[1] => Black
[2] => Green
[3] => Red
[4] => White
)
ひらがなを標準ソート
<?php
function compareA( $a, $b ) {
return strncasecmp( $a, $b, 9 );
}
$arrayA = array( "いかり", "いし", "いま", "いか", "いしころ" );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => いか
[1] => いかり
[2] => いし
[3] => いしころ
[4] => いま
)
カタカナを標準ソート
<?php
function compareA( $a, $b ) {
return strncasecmp( $a, $b, 9 );
}
$arrayA = array( "イカリ", "イシ", "イマ", "イカ", "イシコロ" );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => イカ
[1] => イカリ
[2] => イシ
[3] => イシコロ
[4] => イマ
)
アルファベットと数字の文字列を標準ソート
<?php
function compareA( $a, $b ) {
return strncasecmp( $a, $b, 6 );
}
$arrayA = array( "img2.png", "img10.png", "img7.png", "img500.png", "img70.png" );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>
↓↓↓出力結果↓↓↓
(
[0] => img10.png
[1] => img2.png
[2] => img500.png
[3] => img7.png
[4] => img70.png
)