有个二数组 类似下面这种$a = {
[0] => array(
'name' = 'wanglong',
'age' = 33
) [1] => array(
'name' = 'chenJong',
'age' = 33
) [2] => array(
'name' = 'wanglong',
'age' = 33
)
}如何让 重复name索引 的数组只出现一次例如变成$a = {
[0] => array(
'name' = 'wanglong',
'age' = 33
) [1] => array(
'name' = 'chenJong',
'age' = 33
)}
[0] => array(
'name' = 'wanglong',
'age' = 33
) [1] => array(
'name' = 'chenJong',
'age' = 33
) [2] => array(
'name' = 'wanglong',
'age' = 33
)
}如何让 重复name索引 的数组只出现一次例如变成$a = {
[0] => array(
'name' = 'wanglong',
'age' = 33
) [1] => array(
'name' = 'chenJong',
'age' = 33
)}
这个函数课程参考PHP_manual上面很详细!!
function unique_arr($array) {
$name = array();
foreach ($array as $k=>$na)
{
if(!in_array($na['name'],$name))
{
$out[] = $na;
$name[] = $na['name'];
}
}
return $out;
}$a = array(
array(
'name' => 'wanglong',
'age' => 33
), array(
'name' => 'chenJong',
'age' => 32
),array(
'name' => 'wanglong',
'age' => 33
)
);print_r(unique_arr($a));
function multi_unique($array) {
foreach ($array as $k=>$na)
$new[$k] = serialize($na);
$uniq = array_unique($new);
foreach($uniq as $k=>$ser)
$new1[$k] = unserialize($ser);
return ($new1);
}
手册上的一个例子 不过只有当数组中的值完全相同时才会删除
1. //二维数组去掉重复值
2. function unique_arr($array2D){
3. foreach ($array2D as $v){
4. $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
5. $temp[] = $v;
6. }
7. $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
8. foreach ($temp as $k => $v){
9. $temp[$k] = explode(",",$v); //再将拆开的数组重新组装
10. }
11. return $temp;
12. }
$a = array(
array(
'name' => 'wanglong',
'age' => 33
),
array(
'name' => 'chenJong',
'age' => 33
),
array(
'name' => 'wanglong',
'age' => 33
),
);$res = $key = array();
foreach($a AS $v)
{
if(!isset($key[$v['name']]))
{
$key[$v['name']] = 1;
$res[] = $v;
}
}
print_r($res);
array(
'name' => 'wanglong',
'age' => 33
),
array(
'name' => 'chenJong',
'age' => 33
),
array(
'name' => 'wanglong',
'age' => 33
),
);foreach($a as $c) $r[$c['name']] = $c;$a = array_values($r);