PHP 多维数组的排序问题 根据二维数组中某个项排序

PHP内置函数 array_multisort 要求每个数组大小一样 
$areas是地区的二维数组,包含人数和次数,现在要按这2种数进行降序排序  

php代码如下:

foreach($areaArray as &$areas) { 
    $times = $numbers = array(); 
    foreach($areas as $province => $v) { 
        $times[$province] = $v['times']; 
        $numbers[$province] = $v['numbers']; 
    } 
    array_multisort($times, SORT_DESC, $numbers, SORT_DESC, $areas); 
} 

 比如有个多为数组:

$arr = array( 
    ‘d' => array(‘id' => 5, ‘name' => 1, ‘age' => 7), 
    ‘b' => array(‘id' => 2,'name' => 3,'age' => 4), 
    ‘a' => array(‘id' => 8,'name' => 10,'age' => 5), 
    ‘c' => array(‘id' => 1,'name' => 2,'age' => 2) 
);

需要对二维数组中的 age 项排序。 
需要用到PHP的内置函数 array_multisort(),可以看手册。 
自定义函数:

function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){ 
    if(is_array($multi_array)){ 
        foreach ($multi_array as $row_array){ 
            if(is_array($row_array)){ 
                $key_array[] = $row_array[$sort_key]; 
            }else{ 
                return false; 
            } 
        } 
    }else{ 
    return false; 
} 
array_multisort($key_array,$sort,$multi_array); 
return $multi_array; 
}                 

 

//处理 
echo “<pre/>”; 
print_r(multi_array_sort($arr,'age'));exit; 
//输出 
Array 
([c] => Array ( 
    [id] => 1 
    [name] => 2 
    [age] => 2 ) 
[b] => Array ( 
    [id] => 2 
    [name] => 3 
    [age] => 4 
 ) 
[a] => Array ( 
    [id] => 8 
    [name] => 10 
    [age] => 5 
) 
[d] => Array (
    [id] => 5 
    [name] => 1 
    [age] => 7 
    ) 
) 

 

posted @ 2016-07-26 13:10  智昕  阅读(105)  评论(0编辑  收藏  举报