在比较两个2D数组之间的关联行时,ARRAY_DIFF_ASSOC()给出了错误的差异

我有两个数组,我使用arraydiff_assoc()php函数获取差值,但它总是返回comm set作为差值,但它应该是新的q set这有什么问题,请帮助

数组--

Array ( [0] => Array ( [12] => new q sets ) [1] => Array ( [11] => common set ) ) 

Array ( [0] => Array ( [11] => common set ) ) 

使用ARRAY_DIFF_ASSOC()后

Array ( [1] => Array ( [11] => common set ) ) 

解决方案

仅当(string) $elem1 === (string) $elem2时,来自key=>值对的两个值才被视为相等。换句话说,会进行严格的检查,因此字符串表示形式必须相同。

http://php.net/manual/en/function.array-diff-assoc.php

The (string) value of any array is "Array".因此,您对array_diff_assoc的调用实际上是在比较这两件事:

Array ( [0] => "Array" [1] => "Array" ) 
Array ( [0] => "Array" ) 

由于这两个数组之间的不同之处在于第一个数组中的[1]键/值对,因此您将得到该键/值对([1] => Array( [11] => common set ))。

相关文章