strncasecmp( string $str1, string $str2, int $len )

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 )は、大文字と小文字を区別しない。

定義

整数型 strncasecmp( 文字列型 $str1, 文字列型 $str2, 整数型 $len );

パラメータ

文字列型 $str1

「$str2」と比較したい文字列を指定する。

文字列型 $str2

「$str1」と比較したい文字列を指定する。

整数型 $len

比較する文字数を指定する。

戻り値

「$str1」と「$str2」の文字列を、「$len」に指定した文字数分だけ比較し、「$str1」が「$str2」より大きければ「正数」、「$str1」と「$str2」が等しければ「0」、「$str1」が「$str2」より小さければ「負数」を返す。

  • $str1 > $str2 : 正数
  • $str1 = $str2 : 0
  • $str1 < $str2 : 負数

構文

文字列比較

整数 = strncasecmp( 文字列1, 文字列2, 文字数 );

「文字列1」と「文字列2」の文字列を、「文字数」に指定した文字数分だけ比較し、「文字列1」が「文字列2」より大きければ「正数」、「文字列1」と「文字列2」が等しければ「0」、「文字列1」が「文字列2」より小さければ「負数」を返す。

usortのコールバック関数の中で使い、配列を標準ソート

function コールバック関数( 文字列1, 文字列2 ) {
    return strncasecmp( 文字列1, 文字列2, 文字数 );
}
usort( 配列, コールバック関数 );

「配列」の要素を、「文字数」に指定した文字数分だけ比較し、標準ソートで並べ替える。

サンプル

数字を文字列比較

「123」と「120」の文字列は、1文字だけ比較すると「1」で同じ、2文字だけ比較すると「12」で同じ、3文字比較すると相違点が現れる。

<?php
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
0
3
0
-3

アルファベットを文字列比較

大文字と小文字を区別しない点に注目。

<?php
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
0
20
0

ひらがなを文字列比較

<?php
echo strncasecmp( "たかだ", "たかはし", 3 ) . "<br />";
echo strncasecmp( "たかだ", "たかはし", 6 ) . "<br />";
echo strncasecmp( "たかだ", "たかはし", 9 ) . "<br />";
echo strncasecmp( "たかだ", "たかはし", 12 ) . "<br />";
?>

↓↓↓出力結果↓↓↓

0
0
-15
-15

数字を標準ソート

<pre>
<?php
function compareA( $a, $b ) {
    return strncasecmp( $a, $b, 1 );
}
$arrayA = array( 2, 10, 7, 500, 70 );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => 10
    [1] => 2
    [2] => 500
    [3] => 70
    [4] => 7
)

アルファベットを標準ソート

<pre>
<?php
function compareA( $a, $b ) {
    return strncasecmp( $a, $b, 2 );
}
$arrayA = array( "White", "Black", "Red", "Blue", "Green" );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => Blue
    [1] => Black
    [2] => Green
    [3] => Red
    [4] => White
)

ひらがなを標準ソート

<pre>
<?php
function compareA( $a, $b ) {
    return strncasecmp( $a, $b, 9 );
}
$arrayA = array( "いかり", "いし", "いま", "いか", "いしころ" );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => いか
    [1] => いかり
    [2] => いし
    [3] => いしころ
    [4] => いま
)

カタカナを標準ソート

<pre>
<?php
function compareA( $a, $b ) {
    return strncasecmp( $a, $b, 9 );
}
$arrayA = array( "イカリ", "イシ", "イマ", "イカ", "イシコロ" );
usort( $arrayA, "compareA" );
print_r( $arrayA );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => イカ
    [1] => イカリ
    [2] => イシ
    [3] => イシコロ
    [4] => イマ
)

アルファベットと数字の文字列を標準ソート

<pre>
<?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>

↓↓↓出力結果↓↓↓

Array
(
    [0] => img10.png
    [1] => img2.png
    [2] => img500.png
    [3] => img7.png
    [4] => img70.png
)

スポンサード リンク

カテゴリー: PHP, 文字列, 文字列比較, 組み込み関数 タグ: パーマリンク