我在php中有一点问题,我觉得很难用文字解释。我有一个包含键值的关联数组。我想创建一个函数(或者如果已经有一个函数)将数组作为输入并删除重复项但两种方式。
例如:
在我的数组中我有{a - > b} {a - > c} {b - > a} {b - > c} ...
从这个角度看,似乎没有任何重复,但对我来说{a - > b}和{b - > a}是重复的。所以我希望该函数将其视为重复,只返回其中一个。
我尝试使用array_flip / array_unique在循环中交换密钥和值,但是不能正常工作。
即使它是一个长度很大的数组,你能帮忙找到一种方法吗?或者如果有一个php函数可以执行它。
非常感谢帮助,谢谢。
有代码可以说明这个想法:
对于一个类似的数组:
Array (
[0] => Array ( [0] => a [1] => b)
[1] => Array ( [0] => a [1] => c )
[2] => Array ( [0] => b [1] => a )
[3] => Array ( [0] => b [1] => c )
)
答案 0 :(得分:4)
这会删除你的同意
foreach($array as $key => $value){
if (isset($array[$key])){
if(isset($array[$value])){
if($array[$value] == $key){
unset($array[$value]);
}
}
}
}
答案 1 :(得分:2)
这应该有效:
function cleanArray($array)
{
$newArray = array();
foreach ($array as $key => $val) {
if (isset($array[$val]) && $array[$val] == $key) {
if (!isset($newArray[$key]) && !isset($newArray[$val])) {
$newArray[$key] = $val;
}
unset($array[$key], $array[$val]);
}
}
return array_merge($array, $newArray);
}