应用情景,因开发API接口,对php调出的数组处理后封装为json格式
现有
[1] => array(3) { ["paper_pack_name"] => string(7) "联考1" ["paper_pack_id"] => string(1) "1" ["class_id"] => string(13) "0101001001002" } [2] => array(3) { ["paper_pack_name"] => string(7) "联考1" ["paper_pack_id"] => string(1) "1" ["class_id"] => string(13) "0101001001001" }
目标:
array(3) { ["paper_pack_name"] => string(7) "联考1" ["paper_pack_id"] => string(1) "1" ["class_id"] => string(13) "0101001001001|0101001001002"}实现方法:
//对数组按照paper_pack_id大小进行排序private function array_sort($arr,$keys,$type='asc'){ //处理数组,参照字段,排序方式 $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue);//把数组内部指针指向第一个元素并返回值 foreach ($keysvalue as $k=>$v){ $new_array[] = $arr[$k]; } $new_array = array_merge($new_array); return $new_array; }
//对排序好的数组进行合并整合
private function array_merge($arr,$keys,$merge){//处理数组,参照字段,处理字段 foreach($arr as $k=>$v){ $j = $k-1; if($arr[$k][$keys] == $arr[$j][$keys]){ $merge_unset = $arr[$j][$merge]; $arr[$j][$merge] = $arr[$k][$merge].'|'.$merge_unset; unset($arr[$k]); } } return $arr; }
排序算法也可使用usort函数,基本实例如下:<span style="white-space:pre"> </span>usort($users, function($a, $b) { $al = strlen($a['name']); $bl = strlen($b['name']); if ($al == $bl) return 0; return ($al > $bl) ? -1 : 1; });
</pre>