usortとは? わかりやすく解説

usort

(PHP 4, PHP 5)
usort — ユーザー定義の比較関数を使用して、配列を値でソートする

説明

bool usort ( array &array, callback cmp_function )
この関数は、ユーザー定義の比較関数により配列をその値でソートします。 ソートしたい配列を複雑な基準でソートする必要がある場合、 この関数を使用するべきです。
比較関数は、最初の引数が 2 番目の引数より小さいか、等しいか、大きい場合に、 それぞれゼロ未満、ゼロに等しい、ゼロより大きい整数を返す 必要があります。
注意: 二つのメンバーの比較結果が等しいとなった場合、 ソートされた配列の順番は定義されません。PHP 4.0.6 までは、 ユーザー定義関数はそれらの要素の順番を維持します。しかし PHP 4.1.0 以降で導入された新しいソートアルゴリズムでは、 それと同等のことを行う効果的な方法はありません。

注意: この関数は、 array パラメータの要素に対して新しいキーを割り当てます。 その際、単純にキーを並べ替える代わりに、 すでに割り当てられている既存のキーを削除してしまいます。
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例 304. usort() の例
<?php
function cmp($a, $b)
{
   if ($a == $b) {
       return 0;
   }
   return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $key => $value) {
   echo "$key: $value\n";
}
?>
上の例の出力は以下となります。

0: 1
1: 2
2: 3
3: 5
4: 6

    


注意: もちろん、このような簡単な例では rsort() 関数の方がより適当です。
例 305. 多次元配列を使用する usort() の例
<?php
function cmp($a, $b)
{
   return strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";

usort($fruits, "cmp");

while (list($key, $value) = each($fruits)) {
   echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}
?>
多次元配列をソートする際には、$a$b は配列の最初のインデックスへの参照を保持しています。
上の例の出力は以下となります。

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons

    


例 306. usort() でオブジェクトのメンバ関数を使用する例
<?php
class TestObj {
   var $name;

   function TestObj($name)
   {
       $this->name = $name;
   }

   /* This is the static comparing function: */
   function cmp_obj($a, $b)
   {
       $al = strtolower($a->name);
       $bl = strtolower($b->name);
       if ($al == $bl) {
           return 0;
       }
       return ($al > $bl) ? +1 : -1;
   }
}

$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");

usort($a, array("TestObj", "cmp_obj"));

foreach ($a as $item) {
   echo $item->name . "\n";
}
?>
上の例の出力は以下となります。

b
c
d

    


uasort()uksort()sort()asort()arsort()ksort()natsort() および rsort() も参照ください。




固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「usort」の関連用語

usortのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



usortのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2024 by the PHP Documentation Group.

©2024 GRAS Group, Inc.RSS