【PHP】多次元配列を奥のほうの値で並べ替える方法
1次元の配列のソートはasort関数等で行うことが可能ですが、2次元配列以上を並べ替えたい場合はarray_multisortを使うととても便利です。
array_multisort関数
以下のような配列があります。
配列名を$brothersとします。
array(3) { [0]=> array(2) { ["name"]=> string(12) "いちろう" ["age"]=> string(1) "5" } [1]=> array(2) { ["name"]=> string(12) "さぶろう" ["age"]=> string(1) "3" } [2]=> array(2) { ["name"]=> string(9) "じろう" ["age"]=> string(1) "4" } }
$brothersを年齢昇順に並べ替えたい場合は以下のようにします。
まず$brothersから年齢だけを取り出した配列$ageをつくります。
foreach ($brothers as $row) { $age[] = $row['age']; }
そしてarray_multisortの出番です。
array_multisort($age,SORT_ASC,$brothers);
$ageを昇順にソートしてついでに$brothersも同じ順番に入れ替えるようなイメージです。
これで以下のように$brothersがソートされ、上書きされます。
array(3) { [0]=> array(2) { ["name"]=> string(12) "さぶろう" ["age"]=> string(1) "3" } [1]=> array(2) { ["name"]=> string(9) "じろう" ["age"]=> string(1) "4" } [2]=> array(2) { ["name"]=> string(12) "いちろう" ["age"]=> string(1) "5" } }
今まで面倒くさい手順を取っていましたが、こんなに便利な関数があったのですね・・・
array_multisortを使いこなすことで、配列をより強力に扱えるようになると思います。
コメントを残す