🙌
PHP 二次元連想配列内のデータを元に、順番を並び替えたい時
結論
array_multisort()関数使えば良いということ。
具体例
例えば下記のようなコード、
変更前
$shopList = Array
(
[0] => Shop Object
(
[company_name] => Lowson
[attributes:protected] => Array
(
[id] => 1
[code] => 00003
[name] => 長野店
)
)
[1] => Shop Object
(
[company_name] => Seven
[attributes:protected] => Array
(
[id] => 2
[code] => 00001
[name] => 松本店
)
)
[2] => Shop Object
(
[company_name] => Famima
[attributes:protected] => Array
(
[id] => 3
[code] => 00002
[name] => 浜松町店1
)
)
)
こちらを、code順で並び替えたい!という時、
foreach ($shopList as $k => $v) {
$sort[$k] = $v['code']; //ソートする為の配列を用意
}
array_multisort($sort, SORT_ASC, $shopList);
上記を記述することによって、code順に並び替えることができる。
変更後
$shopList = Array
(
[0] => Shop Object
(
[company_name] => Seven
[attributes:protected] => Array
(
[id] => 2
[code] => 00001
[name] => 松本店
)
)
[1] => Shop Object
(
[company_name] => Famima
[attributes:protected] => Array
(
[id] => 3
[code] => 00002
[name] => 浜松町店1
)
)
[2] => Shop Object
(
[company_name] => Lowson
[attributes:protected] => Array
(
[id] => 1
[code] => 00003
[name] => 長野店
)
)
)
ちなみにarray_multisortを行う前の$sortの中身は下記
// $sortの中身
Array
(
[0] => 00003
[1] => 00001
[2] => 00002
)
今回使ったarray_multisort()関数
第一引数・・・ソートしたい配列
第二引数・・・array のソート順(昇順の場合、省略可)
第三引数・・・array のソート方法(今回省略している)
第三引数・・・追加の配列(これが並び替えたい$shopList)
※PHPマニュアル見れば一発ですが
つまり今回は、
$shopList配列を、$sort順の変更とともに、同じキーでソートしちゃう」という感じのよう。
Discussion