使用count返回数组中的差异

时间:2016-08-07 15:36:46

标签: php arrays algorithm count max

我目前正在使用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'

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