PHPサンプル
UPDATE:2017年03月29日
値によるソートをしたい(ユーザ定義順)
配列ソート 値によるソート ユーザ定義順 usort()
論理値 = usort(配列, コールバック関数名);
ユーザー定義の比較関数に従って、配列の各要素の値で並び替えます。成功した場合に TRUE を、失敗した場合に FALSE を返します。
POINT
- 配列要素の値が基準となる
- キーと値の相関関係は維持しない
- 比較結果が等しくなるメンバーが複数存在する場合、 ソート後の配列でのそれらのメンバーの並び順は未定義となる
- この関数は、 array パラメータの要素に対して新しいキーを割り当てる。その際、単純にキーを並べ替える代わりに、すでに割り当てられている既存のキーを削除する
- 比較関数は、最初の引数と2番目の引数の比較結果を返えす。最初の引数のほうが2番目の引数より大きい場合は正の数を、2番目の引数と等しい場合はゼロを、そして2番目の引数より小さい場合は負の数を返す必要がある
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <!-- サンプルコード --> <h3>配列ソート ユーザ定義の比較関数によるソート</h3> <?php //ユーザー定義関数 function cmp($a, $b){ if($a == $b){ return 0; } return($a < $b) ? -1 : 1; } //配列 $ary = array(3, 2, 5, 6, 1); //ソート前 foreach($ary as $key => $value){ print "キー(\$key) : {$key} 値(\$value) : {$value}<br>\n"; } //ソート後 echo 'usort後↓<br>'; usort($ary, "cmp"); foreach($ary as $key => $value){ print "キー(\$key) : {$key} 値(\$value) : {$value}<br>\n"; } ?> <h3>配列ソート ユーザ定の比較関数によるソート キー:nameでソート</h3> <?php //比較関数 function sort_by_name($a, $b){ if ($a['name'] == $b['name']){ return 0; } return ($a['name'] < $b['name']) ? -1 : 1; } //配列 $ary = array( array('idno' => 1, 'name' => 'sato'), array('idno' => 2, 'name' => 'yamada'), array('idno' => 3, 'name' => 'tanaka'), array('idno' => 4, 'name' => 'suzuki'), array('idno' => 5, 'name' => 'yokota'), ); //nameでソート usort($ary, "sort_by_name"); //配列の展開 foreach($ary as $value){ foreach($value as $key2 => $value2){ print "キー : {$key2} 値 : {$value2}<br>\n"; } echo "------------------------<br>\n"; } ?> |
実行結果
配列ソート ユーザ定義の比較関数によるソート
キー($key) : 0 値($value) : 3
キー($key) : 1 値($value) : 2
キー($key) : 2 値($value) : 5
キー($key) : 3 値($value) : 6
キー($key) : 4 値($value) : 1
usort後↓
キー($key) : 0 値($value) : 1
キー($key) : 1 値($value) : 2
キー($key) : 2 値($value) : 3
キー($key) : 3 値($value) : 5
キー($key) : 4 値($value) : 6
キー($key) : 0 値($value) : 3
キー($key) : 1 値($value) : 2
キー($key) : 2 値($value) : 5
キー($key) : 3 値($value) : 6
キー($key) : 4 値($value) : 1
usort後↓
キー($key) : 0 値($value) : 1
キー($key) : 1 値($value) : 2
キー($key) : 2 値($value) : 3
キー($key) : 3 値($value) : 5
キー($key) : 4 値($value) : 6
配列ソート ユーザ定の比較関数によるソート キー:nameでソート
キー : idno 値 : 1
キー : name 値 : sato
————————
キー : idno 値 : 4
キー : name 値 : suzuki
————————
キー : idno 値 : 3
キー : name 値 : tanaka
————————
キー : idno 値 : 2
キー : name 値 : yamada
————————
キー : idno 値 : 5
キー : name 値 : yokota
————————
タグ(=記事関連ワード)
日付
投稿日:2012年3月22日
最終更新日:2017年03月29日
最終更新日:2017年03月29日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpsample-array-usort/trackback/