Php 从多维数组中删除重复的元素
我有一个数组包含这个数据Php 从多维数组中删除重复的元素,php,arrays,duplicates,Php,Arrays,Duplicates,我有一个数组包含这个数据 Array ( [id] => Array ( [0] => 1 [1] => 10 [2] => 4 ) [age] => Array ( [0] => 1 [1] => 1 [2] => 2
Array
(
[id] => Array
(
[0] => 1
[1] => 10
[2] => 4
)
[age] => Array
(
[0] => 1
[1] => 1
[2] => 2
)
)
现在我想删除['age']中的重复项,并保留第一个
所以这会回来
Array
(
[id] => Array
(
[0] => 1
[2] => 4
)
[age] => Array
(
[0] => 1
[2] => 2
)
)
有什么想法吗?或者已经有一个函数可以实现这一点了吗?正如Gordon所说,您需要一个自定义函数来建立关系,但您可以使用它 让age数组的键与id数组的对应值不是更好吗?
<?php
$array = array(
'id' => array(0 => 1, 1 => 10, 3 => 4),
'age' => array(0 => 1, 1 => 1, 2 => 2)
);
array_walk($array, 'dupe_killer');
print_r($array);
function dupe_killer(&$value, $key)
{
$value = array_unique($value);
}
?>
您可以试试这个
$array = array('id' => array(1,10,4), 'age'=>array(1,1,2));
$age_array = array();
foreach ($array['age'] as $key => $val) {
if (in_array($val, $age_array))
unset($array['id'][$key], $array['age'][$key]);
$age_array[] = $val;
}
print_r($array);
这将返回Array([id]=>Array([0]=>1[2]=>4)[age]=>Array([0]=>1[2]=>2])
问候
Luke如果$array['age']中已经存在一个值,您希望将其删除,同时从$array['id']中删除具有相同键(与已删除的键相同)的项,对吗?问题主体中缺少了这一点。为什么返回中缺少id中的键“1”?值10不是重复值。array\u walk将用户定义的函数funcname应用于数组$array的每个元素。虽然这里没有必要,但它不起作用。从$ids中删除重复项,但不从$agesarray_unique()中删除相同的项不是递归的,如何将其应用于每个元素?啊,我误解了这个问题。看来找到了答案,干杯@约什托尼克。我认为您需要再次阅读array_unique()的手册;好主意,这样我就可以抓到第一件东西,不用担心被骗了!