这是我将用来过滤的输入数组。
[TESTING] => Array
(
[0] => Array
(
[a] => false
[b] => WCP
[c] => Title A
)
[1] => Array
(
[a] => false
[b] => WCP
[c] => Title B
)
[2] => Array
(
[a] => false
[b] => WCP
[c] => Title C
)
)
我想删除同时具有以下值的重复记录:键 [a] 和 [b] 具有相同的值。我不想使用 [c] 作为删除重复记录的条件。在这种情况下,输出应该是。
[TESTING] => Array
(
)
因为所有 3 个子数组都有键 [a] 的值和键 [b] 的值相同。我使用了array_unique()
但此函数使用所有 3 个 [a]、[b] 和 [c] 作为删除我不想要的重复记录的条件。我没有得到我想要的输出。
需要帮助。有什么建议或想法吗?
如果您发现它有用,这是您问题的解决方案:-
<?php $a = array(
0 => array(
"a" => false,
"b" => "WCP",
"c" => "Title A"
),
1 => array(
"a" => false,
"b" => "WCP",
"c" => "Title B"
),
2 => array(
"a" => false,
"b" => "WCP",
"c" => "Title C"
)
);
global $checkArray;
$checkArray = $a;
function array_remove($a){
global $checkArray;
$arrLen = count($checkArray);
unset($a['c']);
foreach ($checkArray as $key => $value) {
$diff = array_diff($value, $a);
if (1 != count($diff) || !array_key_exists('c', $diff)){
return true;
}
}
return false;
}
print_r(array_filter($a, "array_remove"));
PHP 中的数组函数主要是为 2D 数组设计的。 您需要遍历多维数组,比较键值,然后将正确的结果分配给保持数组。 保持数组需要一个范围,该范围将允许通过多维数组的上层进行多次迭代。 这可以作为与array_filter一起使用的功能来完成;或者,通过独立重新分配完成。
试试这个,
function clearDuplicates($array)
{
$new_array=array();
for($i=0;$i<count($array);$i++)
{
$x=false;
for($j=0;$j<count($array);$j++)
if($j!=$i)
if($array[$i]["a"]==$array[$j]["a"] && $array[$i]["b"]==$array[$j]["b"])
$x=true;
if(!$x)
$new_array[]=$array[$i];
}
return new_array;
}