Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按值对分组多维数组排序_Php_Arrays_Sorting_Multidimensional Array - Fatal编程技术网

Php 按值对分组多维数组排序

Php 按值对分组多维数组排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,需要帮助排序多维数组。对于上面的数组,我想按“sort”值按降序对每个组的内容进行排序。团队的关键点应该保持得体(苹果、橙色),但内容的关键点并不重要 数据应按以下顺序排列: 苹果 苹果10 苹果5 苹果4 苹果1 橙色的 橙色10 橙色_4 用于对阵列进行排序: $data = array( 'apple' => array( 0 => array('sort'=>4, 'name'=>'apple_4'), 1 =&g

需要帮助排序多维数组。对于上面的数组,我想按“sort”值按降序对每个组的内容进行排序。团队的关键点应该保持得体(苹果、橙色),但内容的关键点并不重要

数据应按以下顺序排列:

  • 苹果
    • 苹果10
    • 苹果5
    • 苹果4
    • 苹果1
  • 橙色的
    • 橙色10
    • 橙色_4
用于对阵列进行排序:

$data = array(
    'apple' => array(
        0 => array('sort'=>4, 'name'=>'apple_4'),
        1 => array('sort'=>10, 'name'=>'apple_10'),
        2 => array('sort'=>5, 'name'=>'apple_5'),
        3 => array('sort'=>1, 'name'=>'apple_1')
        ),

    'orange' => array(
        0 => array('sort'=>4, 'name'=>'orange_4'),
        1 => array('sort'=>10, 'name'=>'orange_10')
        )
    );
$data=array(
“苹果”=>数组(
0=>array('sort'=>4,'name'=>apple_4'),
1=>array('sort'=>10,'name'=>apple_10'),
2=>array('sort'=>5,'name'=>apple_5'),
3=>array('sort'=>1,'name'=>apple\u 1')
),                                                                          
“橙色”=>数组(
0=>array('sort'=>4,'name'=>orange_4'),
1=>array('sort'=>10,'name'=>orange\u10'))
)                                                                           
);                                                                              
foreach($data as&$value){
usort($value,function($a,$b){
返回$a['sort']<$b['sort'];
});                                                                                                                                       
}                                                                               

您尝试过什么吗?@LouisW可能重复如果您正在排序的字段不是字符串,您应该使用更新的代码^^^将删除其他注释,因为所有内容都已清除。(在此处添加此项的foreach循环的替代方法是使用
array\u walk()
,例如
array\u walk($data,function(&$value){/*usort()here*/}
foreach($data as &$value) {
    usort($value,function($a,$b) {
        return $b['sort'] - $a['sort'];
    });
}
$data = array(                                                                  
    'apple' => array(                                                           
        0 => array('sort'=>4, 'name'=>'apple_4'),                               
        1 => array('sort'=>10, 'name'=>'apple_10'),                             
        2 => array('sort'=>5, 'name'=>'apple_5'),                               
        3 => array('sort'=>1, 'name'=>'apple_1')                                
    ),                                                                          

    'orange' => array(                                                          
        0 => array('sort'=>4, 'name'=>'orange_4'),                              
        1 => array('sort'=>10, 'name'=>'orange_10')                             
    )                                                                           
);                                                                              

foreach($data as &$value) {                                                        
    usort($value, function($a, $b) {                                            
        return $a['sort'] < $b['sort'];                                         
    });                                                                                                                                       
}