PHP 二维数组根据其中某个键值判断,将有此值的项只保留一个

array( [0] => Array (
[user_id] => 71
[brand_id] => 2
[brand_name] => (A)奥迪,(A)阿斯顿·马丁,(B)别克,(B)宾利,(B)标致,(B)本田,(B)奔腾,(B)北汽幻速,(B)宝骏,(B)布加迪
)
[1] => Array
(
[user_id] => 71
[brand_id] => 789
[brand_name] => (A)奥迪,(A)阿斯顿·马丁,(B)别克,(B)宾利,(B)标致,(B)本田,(B)奔腾,(B)北汽幻速,(B)宝骏,(B)布加迪
)

[2] => Array
(
[user_id] => 36
[brand_id] => 23
[brand_name] => (D)大众
)
[3] => Array
(
[user_id] => 35
[brand_id] => 2
[brand_name] => (A)奥迪
)
[4] => Array
(
[user_id] => 34
[brand_id] => 2
[brand_name] => (A)奥迪
)
)
例如上面的数组,将user_id 相等的项删掉,结果如下:
array( [0] => Array (
[user_id] => 71
[brand_id] => 2
[brand_name] => (A)奥迪,(A)阿斯顿·马丁,(B)别克,(B)宾利,(B)标致,(B)本田,(B)奔腾,(B)北汽幻速,(B)宝骏,(B)布加迪
)
[1] => Array
(
[user_id] => 36
[brand_id] => 23
[brand_name] => (D)大众
)
[2] => Array
(
[user_id] => 35
[brand_id] => 2
[brand_name] => (A)奥迪
)
[3] => Array
(
[user_id] => 34
[brand_id] => 2
[brand_name] => (A)奥迪
)
)

<?php
$arr = array(
    array('user_id'=>1,'brand_id'=>'aaa','brand_name'=>'1'),
    array('user_id'=>1,'brand_id'=>'aaa','brand_name'=>'2'),
    array('user_id'=>1,'brand_id'=>'aaa','brand_name'=>'3'),
    array('user_id'=>2,'brand_id'=>'ddd','brand_name'=>'4'),
    array('user_id'=>3,'brand_id'=>'ddd','brand_name'=>'5')
);
//print_r($arr);
$newarr = array();
foreach($arr as $_arr){
    if(!isset($newarr[$_arr['user_id']])){
        $newarr[$_arr['user_id']] = $_arr;
    }
}
print_r($newarr);
exit;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-14
最原始的方法,直接遍历一遍不就出来了吗
第2个回答  2015-10-14
思路:构造一维数组,然后array_unique()追问

里面有些值是不同的,构造一维数组后,值也是不同的,所以array_unique()这个方法不管用....

相似回答