在网上找到很简洁的实用的方法:
1、使用“array_map('serialize', $arr)”将多维数组转换为以字符串形式的一维数组。
2、使用array_unique()去除一维数组中的重复值。
3、将去重后的一维数组重新转为多维数组。
实例:
function array_unique_new($arr) {
$t = array_map('serialize', $arr);
//利用serialize()方法将数组转换为以字符串形式的一维数组
$t = array_unique($t);
//去掉重复值
$new_arr = array_map('unserialize', $t);
//然后将刚组建的一维数组转回为php值
return $new_arr;
}
以上就是本次主题的所有内容了,下面是自己跟进PHP可用函数,仿写的一个去重函数可忽略。
/**
* 二维数组去重
* @param array $arr
* @return array
*/
private static function arrayUnique ($data=[])
{
$tmp = array();
foreach ($data as $key => $value) {
foreach ($value as $key1 => $value1) {
$value[$key1] = $key1 . '_|_' . $value1;
}
$tmp[$key] = implode(',|,', $value);
}
$tmp = array_unique($tmp);
$newArr = array();
foreach ($tmp as $k => $tmp_v) {
$tmp_v2 = explode(',|,', $tmp_v);
foreach ($tmp_v2 as $k2 => $v2) {
$v2 = explode('_|_', $v2);
$tmp_v3[$v2[0]] = $v2[1];
}
$newArr[$k] = $tmp_v3;
}
return $newArr;
}
网友评论