首页  >  文章  >  后端开发  >  为什么比较 2D 数组时 `array_diff_assoc()` 包含公共行?

为什么比较 2D 数组时 `array_diff_assoc()` 包含公共行?

Barbara Streisand
Barbara Streisand原创
2024-10-26 06:06:02803浏览

Why Does `array_diff_assoc()` Include Common Rows When Comparing 2D Arrays?

使用另一个数组过滤 2D 数组行

您有两个 2D 数组,并打算使用 array_diff_assoc() 来识别第一个数组不存在于第二个数组中。但是,您会遇到结果中包含公共行的问题。

该问题源于 array_diff_assoc() 比较值的方式。它执行严格的字符串比较,这意味着值的类型和值必须相同才能被视为相等。在给定的示例中:

<code class="php">$array1 = [
    [12 => 'new q sets'],
    [11 => 'common set']
];

$array2 = [
    [11 => 'common set']
];</code>

当调用 array_diff_assoc($array1, $array2) 时,两个数组的字符串表示形式都是“Array”。因此,根据 $array1 中的附加行([12] => '新 q 组')检测到差异。因此,公共行([11] => '公共集')包含在差异中。

要解决此问题,请考虑使用不同的比较方法。如果数组中的数据是数字或可以转换为数字,则可以使用 array_diff_uassoc(),它允许您指定自定义比较函数。或者,您可以通过迭代两个数组并检查值是否相等来手动过滤行。

以上是为什么比较 2D 数组时 `array_diff_assoc()` 包含公共行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn