我期待输出为2,5,但从下面的代码中获得2,3的输出。任何人都可以建议解决方案,请指出我的错误
<?php
$k=0;
$array1=Array(1,2,3);
$array2=Array(1,3,5);
$array3=Array();
for($i=0;$i<count($array1);$i++)
{
if(!in_array($array1[$i],$array2))
{
if(!in_array($array1[$i],$array3))
{
$array3[$k]=$array1[$i];
$k++;
}
}
}
for($j=0;$j<count($array2);$j++)
{
if(!in_array($array2[$j],$array1))
{
if(!in_array($array2[$j],$array3))
{
$array3[$k]=$array1[$j];
$k++;
}
}
}
print_r($array3);
?>
答案 0 :(得分:1)
您可以使用array_diff()
从每个数组中获取唯一值,然后将它们合并为一个最终数组:
$array1=Array(1,2,3);
$array2=Array(1,3,5);
$unique1 = array_diff($array1, $array2);
$unique2 = array_diff($array2, $array1);
$unique = array_merge($unique1, $unique2);
print_r($unique1); // Array ( [1] => 2 [2] => 5 )
答案 1 :(得分:1)
在第二个循环中,您使用的$array1[$j]
应该是$array2[$j]
。
for($j=0;$j<count($array2);$j++)
{
if(!in_array($array2[$j],$array1))
{
if(!in_array($array2[$j],$array3))
{
$array3[$k]=$array2[$j]; // this is where the fix is
$k++;
}
}
}
话虽如此,约翰肯定是你应该使用array_diff()
。