php - 使用计数返回数组中的差异

标签 php arrays algorithm count max

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

相关文章:

java - 如何创建一个方法来计算数组中的字符数

python - 有没有办法使用伪随机序列或哈希函数模拟队列的 python random.shuffle?

multithreading - 关于作者如何在读者/作者算法中被签名

php - 在 codeigniter 中分离站点和管理员

javascript - 是否可以使用基于 Web 的编程来剪切音频文件

php - 使用 `Repair Table` 与 myisamchk 修复 mysql myisam 表

php - FFMPEG 视频转换完成后发送电子邮件 (php)

无法使用数字键作为字符串的 PHP 数组

javascript 对象属性未定义,但它存在

algorithm - 使用后缀树近似子字符串匹配