<?php
// 二维数组根据某一键名去重
function assocUnique(&$arr, $key) {
$tmpArr = array();
foreach ($arr as $k => $v) {
if (in_array($v[$key], $tmpArr)) {
unset($arr[$k]);
} else {
$tmpArr[] = $v[$key];
}
}
sort($arr); //sort函数对数组进行排序
return $arr;
}
$aa = array(
array('id' => 123, 'name' => '张三'),
array('id' => 123, 'name' => '李四'),
array('id' => 124, 'name' => '王五'),
array('id' => 125, 'name' => '赵六'),
array('id' => 126, 'name' => '赵六')
);
//$key = 'id';
$key = 'name';
assocUnique($aa, $key);
print_r($aa);
<?php
// 内部的一维数组不能完全相同
function arrayUniqueErWei($array) {
$tmp = [];
foreach ($array as $v) {
$v = join(",", $v); // 降维,也可以用implode,将一维数组转换为用逗号连接的字符串
$tmp[] = $v;
}
$tmp = array_unique($tmp); // 去掉重复的字符串,也就是重复的一维数组 下标非连续
foreach ($tmp as $k => $v) {
$tmp[$k] = explode(",", $v); // 再将拆开的数组重新组装
}
return $tmp;
}
$aa = array(
array('id' => 123, 'name' => '张三'),
array('id' => 123, 'name' => '李四'),
array('id' => 123, 'name' => '李四'),
array('id' => 124, 'name' => '王五'),
array('id' => 126, 'name' => '赵六')
);
// php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数
//$ret = array_unique($aa, SORT_REGULAR); // 下标非连续 等同于arrayUniqueErWei方法
$ret = arrayUniqueErWei($aa);
print_r($ret);
// 结果
Array
(
[0] => Array
(
[0] => 123
[1] => 张三
)
[1] => Array
(
[0] => 123
[1] => 李四
)
[3] => Array
(
[0] => 124
[1] => 王五
)
[4] => Array
(
[0] => 126
[1] => 赵六
)
)