我目前在使用 2 个独立的二维数组在 php 中创建的算法有问题。
我想找出 1 个数组与另一个数组的不同之处并返回值。
目前我的问题是,我使用“应该”的算法为我比较的 2 个数组返回相同的值......但目前它没有。
数组中的值如下:
$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'
最佳答案
了解 array_diff() 的工作原理。
在 $array1(array_diff 中的第一个数组)的第一种情况下,$array2 中只有“索引”值,因此 count(array_diff) 为 0。
在 $array2(array_diff 中的第一个数组) 的第二种情况下,$array1 中不存在 2 个值 (index,java),因此 count(array_diff) 为 2。
这就是为什么在第一种情况下,你会得到 5-0 = 5 这就是为什么在第二种情况下,你会得到 5-2 = 3
关于php - 使用计数返回数组中的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38815738/