我目前正在使用2个独立的二维数组在PHP中创建的算法问题。
我想查找另一个数组与另一个数组的不同之处并返回值。
现在我的问题是,使用'should'的算法我会比较两个数组的相同值...但目前它没有。
数组中的值如下:
$array1 contains ['index','index','index','index','index']
$array2 contains ['index','java','index','none']
当我运行算法时:
function arrayDifference($array1,$array2)
{
if (is_array($array1)&&is_array($array2)){
$result = array_diff($array1, $array2);
$value=max(count($array1),count($array2));
$result=$value-count($result);
return $result;
}
}
我得到了这些结果:
When $array1 is passed in first the result is : 2.
When $array2 is passed in first the result is : 4.
问题在于,由于即时通讯使用相同的数组,如果两者都以与参数顺序无关的方式传递,结果差异是否应该相同?
任何帮助都将不胜感激,谢谢。
更新/注意---------------------------------------
打印出array_diff之后,首先传递的$ array1返回的第一个值是:
'( [1] => java [3] => none )'
and for array2 passed in first:
'Array ( ) 1'
答案 0 :(得分:1)
了解array_diff()的工作原理。
在$ array1(array_diff中的第一个数组)的第一种情况下,只有" index" $ array2中存在的值,因此count(array_diff)为0.
在$ array2(array_diff中的第一个数组)的第二种情况下,$ array1中不存在2个值(index,java),因此count(array_diff)为2。
这就是为什么在第一种情况下,你得到5-0 = 5 这就是为什么在第二种情况下,你得到5-2 = 3