一、对于一二维数组重新组合为另一个二维数组,根据键值名称对一个二维数组进行重新组合例:
/*$paramArray=array(
* 'a'=>array('0'=>'1','1'=>'1','2'=>'1'),
* 'b'=>array('0'=>'2','1'=>'2','2'=>'2','3'=>'2'),
* 'c'=>array('0'=>'3','1'=>'3'),
* )重组为
* array( * '0'=>array('a'=>'1','b'=>'2','c'=>'3'),
* '1'=>array('a'=>'1','b'=>'2','c'=>'3')
* '2'=>array('a'=>'1','b'=>'2'),
* '3'=>array('b'=>'2'),
* )
*/
function reArray($paramArray) { foreach ($paramArray as $k => $v) { foreach ($v as $k1 => $v1) { $param[$k1][$k]=$v[$k1]; } } return $param; }
二、两个已经按倒叙排列的二维数组,组合到一起,根据某一字段(键值)依然按倒叙排列,可以直接调用以下函数,如何需要反过来排序组合,只需将while中的if判断更改
//问题和回答数组组合到新数组,倒叙排列时间最新在上 function reArray($arr1,$arr2) { $newArr=array(); $arr1len= count($arr1); $arr2len= count($arr2); $i=0;$j=0;$n=0; while($i<$arr1len && $j<$arr2len){ $key1= $arr1[$i]['key']; $key2= $arr2[$j]['key']; if($key1>$key2){ $t=$n++; $newArr[$t]=$arr1[$i];$i++; }elseif($key1<$key2){ $t=$n++; $newArr[$t]=$arr2[$j];$j++; } } if($i==$arr1len){ while ($j<$arr2len){ $t=$n++; $newArr[$t]=$arr2[$j];$j++; } } else if($j==$arr2len){ while ($i<$arr1len){ $t=$n++; $newArr[$t]=$arr1[$i];$i++; } } return $newArr; }
三、对于一个二维数组的某个字段(键值)进行排序
/*对一个二维数组某个字段进行排序*/ 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; }