[英]PHP: How to sort multidimentional array values
我試圖按優先級對多維數組排序:
$arr['fruits'][0]['banana']['color'] = 'yellow';
$arr['fruits'][0]['banana']['qty'] = '50';
$arr['fruits'][0]['banana']['priority'] = 3;
$arr['fruits'][1]['apple']['color'] = 'red';
$arr['fruits'][1]['apple']['qty'] = '75';
$arr['fruits'][1]['apple']['priority'] = 1;
$arr['fruits'][2]['grape']['color'] = 'purple';
$arr['fruits'][2]['grape']['qty'] = '100';
$arr['fruits'][2]['grape']['priority'] = 5;
我如何對該數組進行排序以獲取按優先級排序的值?
$arr['fruits'][0]['apple']['color'] = 'red';
$arr['fruits'][0]['apple']['qty'] = 75;
$arr['fruits'][1]['banana']['color'] = 'yellow';
$arr['fruits'][1]['banana']['qty'] = 50;
$arr['fruits'][2]['grape']['color'] = 'purple';
$arr['fruits'][2]['grape']['qty'] = 100;
與通常一樣,使用usort
。 這個特定技巧的訣竅是,您正在排序的事物在內部具有一個額外的數組級別,其中包含您事先不知道的字符串鍵。 您可以使用reset
來獲取它。
usort($arr['fruits'], function($a, $b) {
return reset($a)['priority'] <=> reset($b)['priority'];
});
假設$arr['fruits']
中的每個數字鍵將僅包含一個字符串鍵(水果名稱)來保存單個數組。 IMO數值索引似乎對該數據沒有用,我將使用一種結構,其中水果名稱是直接在fruits
下的鍵,例如
$arr['fruits'] = [
'banana' => ['color' => 'yellow', 'qty' => '50', 'priority' => 3],
'apple' => ['color' => 'red', 'qty' => '75', 'priority' => 1],
'grape' => ['color' => 'purple', 'qty' => '100', 'priority' => 5],
];
您可以使用uasort
進行排序以保留字符串鍵。
uasort($arr['fruits'], function($a, $b) {
return $a['priority'] <=> $b['priority'];
});
但是我不了解整個情況。 可能由於某些原因您需要以其他方式使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.