php - 理解 array_udiff()

标签 php arrays

我有以下简单的函数来尝试理解array_udiff()函数

function udiffCompare( $value, $value2 )
{

echo $value . " - " . $value2 . "<br />";

}

$newArray   =   array(  

                    'value2' => 2, 
                    'value3' => 3, 
                    'value4' => 4
                );

$newArray2  =   array(  

                    'value2' => 2, 
                    'value3' => 3, 
                    'value4' => 4
                );

array_udiff( $newArray, $newArray2, 'udiffCompare' );

我希望这只是返回:

2 - 2
3 - 3
4 - 4

但是它返回:

3 - 2
4 - 3
3 - 2
4 - 3
4 - 4
4 - 3
4 - 3
3 - 2

这让我相信我真的不理解 array_udiff() 的工作原理。

即使我将上面的 echo 语句替换为:

if( $value == $value2 ) { return 1; } 否则{ 返回0; }

即使传递给函数的所有值都相等,输出的数组也完全为空。

请问有人可以发光吗?

最佳答案

array_udiff 计算两个数组的差异。这是 $newArray 中不在 $newArray2 中的所有条目。在这种情况下,结果是一个空数组,因为没有区别。

您看到的输出是因为您正在回显正在比较的每个值。这是一个较大列表的原因是,为了找出差异,array_udiff 必须将 $newArray 中的每个值与 $newArray2< 中的每个值进行比较.

关于php - 理解 array_udiff(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17401716/

相关文章:

php - 在 WooCommerce 管理员订单项上显示 "product short description"

php - 如何提高 Zend Lucene 的性能?

c - 如何从字符数组中逐字读取?

c++ - 如何使用自定义 STL vector 类避免智能指针 delete[] 异常?

C 空字符导致程序行为出现问题

C: char* 不可修改

php - 插件模型关联在 cakephp 2.3 中无法使用 cake ACL 工作

php - 在 HTML 和 PHP 中使用单选按钮 'checked' 值

javascript - 如何为数组中的每个对象添加唯一 ID?

php - 你如何在 mysql 中存储一个包含撇号的值的 php 序列化数组?