【问题标题】:array_diff does not show the differencearray_diff 不显示差异
【发布时间】:2013-03-27 04:07:16
【问题描述】:

我正在尝试使用此代码比较两个数组:

           $diff = array_diff($selected, $checkboxes);

            echo '<br>selected:';
            print_r($selected);
            echo '<br>original:';
            print_r($checkboxes);
            echo '<br>difference:';
            print_r($diff);

奇怪的是,虽然这会导致以下结果:

selected:Array ( [0] => Forum1 [1] => Forum3 [2] => Furniture ) 
original:Array ( [0] => Forum1 [1] => Forum3 [2] => forum4 [3] => Furniture [4] => Nieuwforum ) 
difference:Array ( [0] => Forum1 [1] => Forum3 [2] => Furniture )

array_diff 函数似乎只复制“选定”数组。 我尝试了一些在类似问题中发布的东西,例如使用 array_diff_assoc 但没关系。

有谁知道出了什么问题?

【问题讨论】:

  • 注意:该函数只检查n维数组的一维。

标签: php array-difference


【解决方案1】:

正如array_diff 中提到的那样。

返回一个数组,其中包含 array1 中不存在于任何其他数组中的所有条目

$diff = array_diff($checkboxes,$selected);

Codepad Demo.

【讨论】:

  • 所以这意味着,我只需要切换 $checkboxes 和 $selected 对吗?我已经尝试过了,但这会导致: selected:Array ( [0] => Forum1 [1] => Furniture [2] => Nieuwforum ) original:Array ( [0] => Forum1 [1] => Forum3 [2] => forum4 [3] => Furniture [4] => Nieuwforum ) 区别:Array ( [0] => Forum1 [1] => Forum3 [2] => forum4 [3] => Furniture [4] => Nieuwforum ) 所以它仍然不会只输出整个列表的差异..
  • 是的,您需要切换阵列。检查我在回答中给出的演示。
  • 我检查了它,但这也没有提供两个数组之间的区别。它改为提供匹配项。我的意思是:'返回一个数组,其中包含 array1 中不存在于任何其他数组中的所有条目' 到目前为止,所有解决方案只返回存在于其他数组中的条目
【解决方案2】:

我认为您正在搜索 array_intersect

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多