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

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

Barbara Streisand
发布: 2024-10-26 06:06:02
原创
911 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板