PHP :从关联数组中删除重复值,return 包含重复值的关联数组
PHP : Remove duplicate values from associative array and return an associative array containing the duplicate values
我有如下的关联数组
$arr = [1=>0, 2=>1, 3=>1, 4=>2]
我想从初始数组中删除重复值,然后 return 将这些重复值作为一个新数组。所以我最终会得到类似的东西;
$arr = [1=>0, 4=>2]
$new_arr = [2=>1, 3=>1]
PHP是否提供这样的功能,如果没有,我该如何实现?
尝试:
使用array_filter()
从数组中获取所有重复值
使用array_diff()
从数组中获取所有唯一值
$array = array(1=>0, 2=>1, 3=>1, 4=>2);
$counts = array_count_values($array);
$duplicates = array_filter($array, function ($value) use ($counts) {
return $counts[$value] > 1;
});
print '<pre>';print_r($duplicates);
$result=array_diff($array,$duplicates);
print '<pre>';print_r($result);
输出:
Array
(
[2] => 1
[3] => 1
)
Array
(
[1] => 0
[4] => 2
)
您可以使用 array_unique and then compare the resulting array with array_diff_assoc
从数组中获取唯一值
这将保留两个数组的索引,这是一个示例:
$arr = array(1=> 2, 2=>2, 3=>3);
print_r($arr);
$arr1 = array_unique($arr);
print_r($arr1);
$arr2 = array_diff_assoc($arr,$arr1);
print_r($arr2);
结果:
Array
(
[1] => 2
[2] => 2
[3] => 3
)
Array
(
[1] => 2
[3] => 3
)
Array
(
[2] => 2
)
我有如下的关联数组
$arr = [1=>0, 2=>1, 3=>1, 4=>2]
我想从初始数组中删除重复值,然后 return 将这些重复值作为一个新数组。所以我最终会得到类似的东西;
$arr = [1=>0, 4=>2]
$new_arr = [2=>1, 3=>1]
PHP是否提供这样的功能,如果没有,我该如何实现?
尝试:
使用array_filter()
从数组中获取所有重复值
使用array_diff()
从数组中获取所有唯一值
$array = array(1=>0, 2=>1, 3=>1, 4=>2);
$counts = array_count_values($array);
$duplicates = array_filter($array, function ($value) use ($counts) {
return $counts[$value] > 1;
});
print '<pre>';print_r($duplicates);
$result=array_diff($array,$duplicates);
print '<pre>';print_r($result);
输出:
Array
(
[2] => 1
[3] => 1
)
Array
(
[1] => 0
[4] => 2
)
您可以使用 array_unique and then compare the resulting array with array_diff_assoc
从数组中获取唯一值这将保留两个数组的索引,这是一个示例:
$arr = array(1=> 2, 2=>2, 3=>3);
print_r($arr);
$arr1 = array_unique($arr);
print_r($arr1);
$arr2 = array_diff_assoc($arr,$arr1);
print_r($arr2);
结果:
Array
(
[1] => 2
[2] => 2
[3] => 3
)
Array
(
[1] => 2
[3] => 3
)
Array
(
[2] => 2
)