PHP 二維數組去重(保留各個鍵值的同時去除重復的項)


對於如下二維數組,要求對其進行去重:

 

$arr = array(
          '0'=>array(
                    'name'=>'james',
                    'age'=>30,
          ),
          '1'=>array(
                    'name'=>'susu',
                    'age'=>26,
          ),
          '2'=>array(
                    'name'=>'james',
                    'age'=>30,
          ),
          'new'=>array(
                    'name'=>'kube',
                    'age'=>37,
          ),
          'list'=>array(
                    'name'=>'kube',
                    'age'=>27,
          ),
);

 

二維數組內部的一維數組因某一個鍵值不能相同,刪除重復項:

/*針對某一個鍵值來進行去重*/

<?php
$arr= array(……);  //同上的二維數組
functionsecond_array_unique_bykey($arr, $key){
    $tmp_arr = array();
    foreach($arr as $k => $v)
    {
        if(in_array($v[$key], $tmp_arr))   //搜索$v[$key]是否在$tmp_arr數組中存在,若存在返回true
        {
            unset($arr[$k]); //銷毀一個變量  如果$tmp_arr中已存在相同的值就刪除該值
        }
        else {
            $tmp_arr[$k] = $v[$key];  //將不同的值放在該數組中保存
        }
   }
   //ksort($arr); //ksort函數對數組進行排序(保留原鍵值key)  sort為不保留key值
    return $arr;
   }
   $key ='name';
   $arr_key = second_array_unique_bykey($arr,$key);
   printf("As for the givenkey->%s:<br>",$key);
   print_r($arr_key);
   echo "<br/>";

輸出結果:

As for the given key->name:
Array (
[
0] => Array ( [name] => james [age] => 30 )
[1] => Array ([name] => susu [age] => 26 )
[2] => Array ( [name] => kube [age]=> 37 )
)

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM