NATSORTマルチディオンアレイ
-
02-10-2019 - |
質問
私はこのような多次元配列を持っています:
array ([0] => array ([id] => 1 [name] => john doe [title] => Mr [days] => 10)
[1] => array ([id] => 2 [name] => Joe Smith [title] => Dr [days] => 22)
[2] => array ([id] => 3 [name] => John Jones [title] => Mr [days] => 3))
データがDaysキーまでに自然に返されるように、内側の配列を並べ替える必要があります。
つまり、このようなもの:
array ([2] => array ([id] => 3 [name] => John Jones [title] => Mr [days] => 3)
[0] => array ([id] => 1 [name] => john doe [title] => Mr [days] => 10)
[1] => array ([id] => 2 [name] => Joe Smith [title] => Dr [days] => 22))
私が必要とするのは、$キーによる多次元配列にNatsortを適用する関数だと思いますが、これまでのところ、標準のソート以外の機能を見つける機能を見つけることができませんでした。
何か助けがありますか?
解決
あなたが欲しいのはです USORT.
あなたはあなたのために比較を行うためにコールバックを書くことができます:
usort($data, function($a, $b) {
return ($a['days'] > $b['days'])
? 1
: ($a['days'] < $b['days'])
? -1
: 0;
});
免責事項:これが機能するにはPHP 5.3.xが必要です。 create_function または比較関数を事前に定義します。
他のヒント
少し別のアプローチ:
$days = array();
foreach($array as $key => $val) {
$days[$key] = $val['days'];
}
array_multisort($days, $array); //$array being your input array
結果:
Array
(
[0] => Array
(
[id] => 3
[name] => Jay Doe
[title] => Mr
[days] => 3
)
[1] => Array
(
[id] => 1
[name] => John Doe
[title] => Mr
[days] => 10
)
[2] => Array
(
[id] => 2
[name] => Joe Doe
[title] => Mr
[days] => 22
)
)
所属していません StackOverflow