連想配列のソートでこれまで色々と苦労してきたんですが、ついさっきものすごい便利な関数を発見しました。
その名も array_multisort 。
[PHP]
// ソートしたい配列を定義
$dataArray[0]['name'] = '太郎';
$dataArray[0]['age'] = '15';
$dataArray[1]['name'] = '花子';
$dataArray[1]['age'] = '5';
$dataArray[2]['name'] = '清盛';
$dataArray[2]['age'] = '45';
// ソートしたい項目を定義
$sort = 'age';
// ソートの順序を定義
$order = 'DESC';
// ソートの開始
// マルチソートに使用する配列を生成
$arrayForSort = array();
foreach ($dataArray as $data) {
$arrayForSort[] = $data[$sort];
}
// ソートの順序(昇順/降順)を決定
if (ereg("(desc|Desc|DESC)", $order)) {
$order = SORT_DESC;
} else {
$order = SORT_ASC;
}
// ソートの実行
array_multisort($forSort, $order, $dataArray);
// 結果の表示
print_r($dataArray);
結果については割愛しますが、上記の例でいくと、清盛→太郎→花子の順になります。
関数化しようとしてたせいか、なんだか間延びしたコードですが、気にせず必要な部分だけ使ってください(笑)
[参考文献]
www.akiyan.com/blog/archives/2007/10/phparray_multis.html
jp2.php.net/array_multisort
その名も array_multisort 。
[PHP]
// ソートしたい配列を定義
$dataArray[0]['name'] = '太郎';
$dataArray[0]['age'] = '15';
$dataArray[1]['name'] = '花子';
$dataArray[1]['age'] = '5';
$dataArray[2]['name'] = '清盛';
$dataArray[2]['age'] = '45';
// ソートしたい項目を定義
$sort = 'age';
// ソートの順序を定義
$order = 'DESC';
// ソートの開始
// マルチソートに使用する配列を生成
$arrayForSort = array();
foreach ($dataArray as $data) {
$arrayForSort[] = $data[$sort];
}
// ソートの順序(昇順/降順)を決定
if (ereg("(desc|Desc|DESC)", $order)) {
$order = SORT_DESC;
} else {
$order = SORT_ASC;
}
// ソートの実行
array_multisort($forSort, $order, $dataArray);
// 結果の表示
print_r($dataArray);
結果については割愛しますが、上記の例でいくと、清盛→太郎→花子の順になります。
関数化しようとしてたせいか、なんだか間延びしたコードですが、気にせず必要な部分だけ使ってください(笑)
[参考文献]
www.akiyan.com/blog/archives/2007/10/phparray_multis.html
jp2.php.net/array_multisort
PR
トラックバック
トラックバックURL: