PHP内置函数 array_multisort 要求每个数组大小一样
$areas是地区的二维数组,包含人数和次数,现在要按这2种数进行降序排序
<BR>foreach($areaArray as &$areas) { <BR>$times = $numbers = array(); <BR>foreach($areas as $province =<mark style="color:transparent">来4源gaodaimacom搞#代%码*网</mark><code>搞代gaodaima码</code>> $v) { <BR>$times[$province] = $v['times']; <BR>$numbers[$province] = $v['numbers']; <BR>} <BR>array_multisort($times, SORT_DESC, $numbers, SORT_DESC, $areas); <BR>} <BR>
比如有个多为数组:
<BR>$arr = array( <BR>‘d' => array(‘id' => 5, ‘name' => 1, ‘age' => 7), <BR>‘b' => array(‘id' => 2,'name' => 3,'age' => 4), <BR>‘a' => array(‘id' => 8,'name' => 10,'age' => 5), <BR>‘c' => array(‘id' => 1,'name' => 2,'age' => 2) <BR>); <BR>
需要对二维数组中的 age 项排序。
需要用到PHP的内置函数 array_multisort(),可以看手册。
自定义函数:
<BR>function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){ <BR>if(is_array($multi_array)){ <BR>foreach ($multi_array as $row_array){ <BR>if(is_array($row_array)){ <BR>$key_array[] = $row_array[$sort_key]; <BR>}else{ <BR>return false; <BR>} <BR>} <BR>}else{ <BR>return false; <BR>} <BR>array_multisort($key_array,$sort,$multi_array); <BR>return $multi_array; <BR>} <BR>//处理 <BR>echo “<pre />”; <BR>print_r(multi_array_sort($arr,'age'));exit; <BR>//输出 <BR>Array <BR>( <BR>[c] => Array <BR>( <BR>[id] => 1 <BR>[name] => 2 <BR>[age] => 2 <BR>) <BR>[b] => Array <BR>( <BR>[id] => 2 <BR>[name] => 3 <BR>[age] => 4 <BR>) <BR>[a] => Array <BR>( <BR>[id] => 8 <BR>[name] => 10 <BR>[age] => 5 <BR>) <BR>[d] => Array <BR>( <BR>[id] => 5 <BR>[name] => 1 <BR>[age] => 7 <BR>) <BR>) <BR>written by 大宇 <BR>0 <BR>