使用另一个数组过滤 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中文网其他相关文章!