Search
  1. ソート型フラグ
  2. arsort〔連想キーと要素の関係を維持しつつ配列を逆順にソート〕
  3. asort〔連想キーと要素の関係を維持しつつ配列をソート〕
  4. krsort〔配列をキーで逆順にソート〕
  5. ksort〔配列をーキーでソート〕
  6. array_multisort〔複数の多次元配列をソート〕
  7. natcasesort〔大文字小文字を区別せずに、自然順アルゴリズムで配列をソート〕
  8. natsort〔自然順アルゴリズムで配列をソート〕
  9. rsort〔配列を逆順にソート〕
  10. sort〔配列をソート〕
  11. uasort〔ユーザー定義の比較関数を用いて、配列をソートし連想インデックスを保持〕
  12. uksort〔ユーザー定義の比較関数を用いて、キーで配列をソート〕
  13. usort〔ユーザー定義の比較関数を用いて、値で配列をソート〕

ソート型フラグ

unknown

ソート型フラグ一覧
フラグ説明
SORT_REGULAR通常通りに項目を比較(型は比較しない)
SORT_NUMERIC数値的に項目を比較
SORT_STRING文字列として項目を比較
SORT_LOCALE_STRINGカレントのロケールに基づき比較。(PHP4.4.0,PHP5.0.2で追加)

arsort
連想キーと要素の関係を維持しつつ配列を逆順にソート

unknown

bool arsort ( array &$配列[, int $ソート型フラグ ])

連想配列において各配列のキーと要素の関係を維持しつつ、配列を逆順にソートします。 成功した場合にTRUE、失敗した場合にFALSEを返します。 オプションの第2引数ソート型フラグによりソートの動作を指定できます。

<?
$fruit = array("b"=>"banan","c"=>"coconut","a"=>"apple");
asort($fruit); //キーと値の関係を保持しつつ連想配列をソート
reset($fruit);  //配列をリセット

print_r($fruit);
//Array ( [c] => coconut [b] => banan [a] => apple ) 
?>

asort
連想キーと要素の関係を維持しつつ配列をソート

unknown

bool asort ( array &$配列[, int $ソート型フラグ ])

連想配列において各配列のキーと要素の関係を維持しつつ、配列をソートします。 成功した場合にTRUE、失敗した場合にFALSEを返します。 オプションの第2引数ソート型フラグによりソートの動作を指定できます。

<?
$fruit = array("b"=>"banan","c"=>"coconut","a"=>"apple");
asort($fruit); //キーと値の関係を保持しつつ連想配列をソート
reset($fruit);  //配列をリセット

print_r($fruit);
//Array ( [a] => apple [b] => banan [c] => coconut ) 
?>

krsort
配列をキーで逆順にソート

unknown

bool krsort ( array &$配列[, int $ソート型フラグ ])

配列キーと値の関係を維持しながらキーで逆順にソートします。 連想配列をキーでソートする場合に便利です。 成功した場合にTRUE、失敗した場合にFALSEを返します。 オプションの第2引数ソート型フラグによりソートの動作を指定できます。

<?
/* 連想配列の場合 */
$fruit = array(
    "b"=>"banana",
    "c"=>"coconut",
    "a"=>"apple"
); 
krsort($fruit); 
print_r($fruit); // Array ( [c] => coconut [b] => banana [a] => apple ) 


/* 通常の配列の場合 */
$item = array(
    "3"=>"item3",
    "1"=>"item1",
    "2"=>"item2"
);
krsort($item); 
print_r($item); // Array ( [3] => item3 [2] => item2 [1] => item1 ) 
?>

ksort
配列をーキーでソート

unknown

bool ksort ( array array[, int $ソート型フラグ ])

配列キーとデータの関係を維持しつつ、キーでソートします。 連想配列をキーで逆順にソートする場合に便利です。 成功した場合にTRUE、失敗した場合にFALSEを返します。 オプションの第2引数ソート型フラグによりソートの動作を指定できます。

<?
/* 連想配列の場合 */
$fruit = array(
    "b"=>"banana",
    "c"=>"coconut",
    "a"=>"apple"
); 
ksort($fruit); 
print_r($fruit); 
// Array ( [a] => apple [b] => banana [c] => coconut ) 


/* 通常の配列の場合 */
$item = array(
    "3"=>"item3",
    "1"=>"item1",
    "2"=>"item2"
);
ksort($item); 
print_r($item);
// Array ( [1] => item1 [2] => item2 [3] => item3 ) 
?>

array_multisort
複数の多次元配列をソート

unknown

bool array_multisort ( array $配列1[, mixed $ソート型フラグ[, mixed ... [, array ... ]]] )

複数の配列または多次元配列を、キーと値の関係を維持したままソートするのに便利です。 連想配列のキーはそのままですが、数値キーの場合は0からの連番に振り直されます。

第1引数配列1は、配列でなければなりません。 その後の各引数には、配列、ソート方向指定フラグ、ソート型フラグのいずれかを指定できますが、 各配列に同じ型のソート型フラグを2つ指定することはできません。

またソート型フラグが適用されるのは、指定された配列のみで、 次の新しい配列を処理する前にデフォルトのSORT_ASCおよびSORT_REGULARにリセットされます。

「ソート方向指定フラグ」と「ソート型フラグ」
ソート方向指定フラグ説明ソート型フラグ説明
SORT_ASC昇順ソートSORT_REGULAR普通に比較
SORT_DESC降順ソートSORT_NUMERIC数値的に比較
 SORT_STRING文字列として比較
<?
/* 複数の配列をソート */
$ar1 = array("10"100100"a");
$ar2 = array(13"2"1);
array_multisort($ar1$ar2);

var_dump($ar1);
var_dump($ar2);
/*
array(4) {
  [0]=>string(2) "10"
  [1]=>string(1) "a"
  [2]=>int(100)
  [3]=>int(100)
}
array(4) {
  [0]=>int(1)
  [1]=>int(1)
  [2]=>string(1) "2"
  [3]=>int(3)
}
*/


/* 多次元配列をソート */
$ar = array(array("10"11100100"a"),
                 array(12"2"31)
);
array_multisort($ar[0], SORT_ASCSORT_STRING, 
                      $ar[1], SORT_NUMERICSORT_DESC);

var_dump($ar);
/*
array(2) {
  [0]=>
  array(5) {
    [0]=>string(2) "10"
    [1]=>int(100)
    [2]=>int(100)
    [3]=>int(11)
    [4]=>string(1) "a"
  }
  [1]=>
  array(5) {
    [0]=>int(1)
    [1]=>int(3)
    [2]=>string(1) "2"
    [3]=>int(2)
    [4]=>int(1)
  }
}
*/
?>

natcasesort
大文字小文字を区別せずに、自然順アルゴリズムで配列をソート

unknown

bool natcasesort ( array &$配列 )

配列キーと値の関係を維持したまま人間が考える順序でソートします。

大文字小文字を区別する場合は、natsort()関数を使用してください。

<?
$array1 $array2 = array(
  "hoge10",
  "HOGE0",
  "HOGE2",
  "hoge100",
  "HOGE11"
);

/* sort(通常ソート)の場合 */
sort($array1);
print_r($array1);
//Array ( [0] => HOGE0 [1] => HOGE11 [2] => HOGE2 [3] => hoge10 [4] => hoge100 )

echo "<br>";

/* natcasesort(自然順ソート)の場合 */
natcasesort($array2);
print_r($array2);
//Array ( [1] => HOGE0 [2] => HOGE2 [0] => hoge10 [4] => HOGE11 [3] => hoge100 ) 
?>

natsort
自然順アルゴリズムで配列をソート

unknown

bool natsort ( array &$配列 )

配列キーと値の関係を維持したまま人間が考える順序でソートします。 大文字小文字は区別され、小文字より大文字が優先されます。 成功した場合にTRUE、失敗した場合にFALSEを返します。

大文字小文字を区別しない場合は、natcasesort()関数を使用してください。

<?
$array1 $array2 = array(
  "hoge10",
  "HOGE0",
  "HOGE2",
  "hoge100",
  "HOGE11"
);

/* sort(通常ソート)の場合 */
sort($array1);
print_r($array1);
//Array ( [0] => HOGE0 [1] => HOGE11 [2] => HOGE2 [3] => hoge10 [4] => hoge100 )

echo "<br>";

/* natsort(自然順ソート)の場合 */
natsort($array2);
print_r($array2);
//Array ( [1] => HOGE0 [2] => HOGE2 [4] => HOGE11 [0] => hoge10 [3] => hoge100 ) 
?>

rsort
配列を逆順にソート

unknown

bool rsort ( array &$配列[, int $ソート型フラグ ])

配列逆順にソート(降順)します。キーと値の関係は保持されません。 成功した場合にTRUE、失敗した場合にFALSEを返します。 オプションの第2引数ソート型フラグによりソートの動作を指定できます。

<?
/* 連想配列の場合 */
$fruit = Array("a"=>"apple","b"=>"banana","c"=>"grape"); 
rsort($fruit); 
print_r($fruit);
// アルファベットの降順にソートされますが、キーは維持されません
// Array ( [0] => grape [1] => banana [2] => apple )


/* 通常の配列の場合 */
$item = Array("3"=>"item3","1"=>"item1","2"=>"item2");
rsort($item);
print_r($item);
// 数値の降順にソートされますが、キーは維持されません
// Array ( [0] => item3 [1] => item2 [2] => item1 )
?>

sort
配列をソート

unknown

bool sort ( array &$配列[, int $ソート型フラグ ];

配列ソート(昇順)します。キーと値の関係は保持されません。 成功した場合にTRUE、失敗した場合にFALSEを返します。 オプションの第2引数ソート型フラグによりソートの動作を指定できます。

<?
/* 連想配列の場合 */
$input = Array(
    "f"=>"aaa",
    "c"=>"ccc",
    "a"=>"aaa",
    "d"=>"ddd",
    "e"=>"eee"
);
sort($input);
print_r($input);
// アルファベットの昇順にソートされますが、キーは維持されません
// Array ( [0] => aaa [1] => aaa [2] => ccc [3] => ddd [4] => eee ) 


/* 通常の配列の場合 */
$item = Array(
    "2"=>"item2",
    "1"=>"item1",
    "3"=>"item3"
);
sort($item);
print_r($item);
// 数値の昇順にソートされますが、キーは維持されません
// Array ( [0] => item1 [1] => item2 [2] => item3 ) 
?>

uasort
ユーザー定義の比較関数を用いて、配列をソートし連想インデックスを保持

unknown

bool uasort ( array &$配列, function $比較関数 )

キーと値の関係を維持するような配列をソートします。 成功した場合にTRUE、失敗した場合にFALSEを返します。 この関数は、連想配列をソートするのに便利です。 オプションの第2引数比較関数は、ユーザー定義関数を使用する場合に指定します。

uksort
ユーザー定義の比較関数を用いて、キーで配列をソート

unknown

bool uksort ( array &$配列, callback $比較関数 )

ユーザー定義の比較関数を用いて配列をソートします。 成功した場合にTRUE、失敗した場合にFALSEを返します。 ソートしたい配列を複雑な基準でソートする場合に便利です。

第2引数比較関数は、配列のキーペアによって満たされる2つの引数を受け取ります。 第1引数と第2引数が等しいまたは大きいとみなさない場合、 この比較関数0またはそれより大きな値を返してはいけません。

<?php
function cmp($a$b){
    if ($a == $b) { return 0; }
    else return ($a $b) ? -1;
}
$a = array(=> "four"=> "three"20 => "twenty"10 => "ten");
uksort($a"cmp");

foreach ($a as $key => $value) {
    echo "$key: $value<br>";
}
/*
20: twenty
10: ten
4: four
3: three
*/
?> 

usort
ユーザー定義の比較関数を用いて、値で配列をソート

unknown

bool usort ( array &$配列, callback $比較関数 )

ユーザー定義の比較関数を用いて、配列をその値でソートします。 キーと値の関係は保持されません。 成功した場合にTRUE、失敗した場合にFALSEを返します。 ソートしたい配列を複雑な基準でソートする場合に便利です。

第2引数比較関数は、第1引数が第2引数より小さい、等しい、大きい場合に、それぞれ0未満、0に等しい、0より大きい整数を返す必要があります。

<?php
function cmp($a$b){
    if ($a == $b) { return 0; }
    else return ($a $b) ? -1;
}
$a = array(32561);
usort($a"cmp");

foreach ($a as $key => $value) {
    echo "$key: $value<br>";
}
/*
0: 1
1: 2
2: 3
3: 5
4: 6
*/

#多次元配列を使用するusort()の例
function cmp_func($a$b){
    return strcmp($a["fruit"], $b["fruit"]);
}
$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";
usort($fruits"cmp_func");

while (list($key$value) = each($fruits)) {
    echo "\$fruits[$key]: ".$value["fruit"]."<br>";
}
/*
$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons
*/
?>

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop