page_adsence

2011年2月24日木曜日

PHPで多次元配列のソートをする方法

array_multisortを使えば多次元配列のソートが可能なのは知っていたけど、
ソートキーって複数設定できたりするってことを初めて知った。

例えば二次元配列要素内の

二つの要素をソートキーに使いたい場合、

分類、商品売上順とか

伝票日付、伝票番号、行番号とか。。。

【コード、年齢】でソートを行う例です。

$data[] = array('code' => '01','age' => 30);
$data[] = array('code' => '02','age' => 25);
$data[] = array('code' => '01','age' => 18);

foreach($data as $key => $val)
{
$sortcode[$key] = $val['code']; //第一キー指定
$sortage[$key] = $val['age']; //第二キー指定
}

array_multisort($sortcode,SORT_ASC,$sortage,SORT_ASC,$data);

ソート実行前

Array
(
[0] => Array
(
[code] => 01
[age] => 30
)

[1] => Array
(
[code] => 02
[age] => 25
)

[2] => Array
(
[code] => 01
[age] => 18
)

)


ソート実行後

Array
(
[0] => Array
(
[code] => 01
[age] => 18
)

[1] => Array
(
[code] => 01
[age] => 30
)

[2] => Array
(
[code] => 02
[age] => 25
)

)