PHP数组处理

1、如何删除两个数组中有交集的元素?

[php] view plain copy

  1. foreach($content_list_temp_recommend as $k=>$v){  
  2. $kk=array_search($v['aid'], $aid_arr_temp);//$v['aid']必定是$aid_arr_temp数组内元素之一的情况  
  3. $msg.=$aid_arr_temp[$kk].",";  
  4. if($kk !== false){//只要不是false就是找到了  
  5. unset($aid_arr_temp[$kk]);//删除后,索引键保持不变  
  6. }  
  7. }  
  8. $aid_arr=  array_values($aid_arr_temp);//经过array_values()函数处理过后,索引键重新分配。  

2、如何在数组头部和尾部及任意位置插入元素?

[php] view plain copy

  1. 插入元素  
  2. array_unshift();//在数组头部插入一个或多个元素    
  3. array_push();//在数组尾部插入一个或多个元素   
  4. array_splice($arr,$start,0,$arr1);//在数组的第$start+1个位置插入新元素(指的是头部和中部任意位置,但不包括尾部),注意:参数3一定要是0  
  5. 删除元素  
  6. array_shift();//删除数组中首个元素,并返回删除后的值  
  7. array_pop();//删除数组的最后一个元素(出栈),并返回删除后的值  

3、如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变

[php] view plain copy

  1. $arr=array(  
  2. array('id'=>1,'name'=>'will','age'=>23),  
  3. array('id'=>2,'name'=>'myth','age'=>32),  
  4. array('id'=>3,'name'=>'allen','age'=>27),  
  5. array('id'=>4,'name'=>'martin','age'=>23)  
  6. );  
  7. foreach($arr as $k=>$v){  
  8. $tag1[]=$v['age']; //age排序字段  
  9. $tag2[]=$v['id'];  //id排序字段  
  10. }  
  11. //相当于 select * from $arr order by $tag1 DESC,$tag2 ASC;//特点:$tag1$tag2$arr数组的元素个数必须要一致  
  12. array_multisort($tag1,SORT_DESC,$tag2,SORT_ASC,$arr);//根据年龄从大到小排列,年龄相同则按id升序排列  
  13. echo "<pre>";print_r($arr);exit;  
  14. ?>  

[php] view plain copy

  1. <?php  
  2. //php二维数组如何按照指定列进行排序?  
  3. function arrSortByField(&$list, $field, $call_func=NULL, $sort_type=SORT_ASC){//引用传值  
  4. $sort_filed = array();  
  5. foreach ($list as $val) {  
  6. if (!isset($val[$field])) return false;  
  7. $sort_filed[] = is_null($call_func) ? $val[$field] : call_user_func($call_func,$val[$field]);  
  8. }   
  9. return array_multisort($sort_field,$sort_type,$list);//$list顺序会随$sort_field顺序变化而变化  
  10. }  
  11. $list= array(  
  12. array('id' =>3, 'name' => 'asdfsdf'),  
  13. array('id' =>1, 'name' => '12'),  
  14. array('id' =>4, 'name' => '10sdf'),  
  15. array('id' =>2, 'name' => 'ada'),  
  16. array('id' =>5, 'name' => 'aasdfbc')  
  17. );  
  18. arrSortByField($list,'name','strlen');//按照 "name" 列的值长度进行排序  
  19. echo "<pre>";print_r($list);  
  20. arrSortByField($list,'id');//按照 "id" 列的值大小进行排序  
  21. echo "<pre>";print_r($list);  

?>

posted @ 2017-11-30 15:34  傻糊糊  阅读(793)  评论(0编辑  收藏  举报