$array = array(
array(
'id' => 10,
'name' => 'hoge',
),
array(
'id' => 3,
'name' => 'fuga',
),
array(
'id' => 20,
'name' => 'foo',
),
array(
'id' => 1,
'name' => 'bar',
),
);
というような2次元配列があり、2次元目のキー'id'の値でソートをしたいときがちょくちょくある。
そこで、以下の様な関数を作ってみた。
function sortArrayByKey( &$array, $sortKey, $sortType = SORT_ASC ) {
$tmpArray = array();
foreach ( $array as $key => $row ) {
$tmpArray[$key] = $row[$sortKey];
}
array_multisort( $tmpArray, $sortType, $array );
unset( $tmpArray );
}
で、以下のように使うと、とてもいい感じになった。
$array = array(
array(
'id' => 10,
'name' => 'hoge',
),
array(
'id' => 3,
'name' => 'fuga',
),
array(
'id' => 20,
'name' => 'foo',
),
array(
'id' => 1,
'name' => 'bar',
),
);
// そのまま出力
print_r( $array );
// ソート実行
sortArrayByKey( $array, 'id' );
// もう一度出力
print_r( $array );
Array
(
[0] => Array
(
[id] => 10
[name] => hoge
)
[1] => Array
(
[id] => 3
[name] => fuga
)
[2] => Array
(
[id] => 20
[name] => foo
)
[3] => Array
(
[id] => 1
[name] => bar
)
)
Array
(
[0] => Array
(
[id] => 1
[name] => bar
)
[1] => Array
(
[id] => 3
[name] => fuga
)
[2] => Array
(
[id] => 10
[name] => hoge
)
[3] => Array
(
[id] => 20
[name] => foo
)
)