查找关联数组列之间的差异
您有两个包含关联数据行的数组,并且您希望根据以下条件过滤第二个数组第一个数组中特定列的值。使用 array_diff() 是不够的,因为它会比较整个行,而不仅仅是所需的列。
要解决这个问题,您可以利用 array_udiff() 函数,它允许您定义自定义比较函数。此函数应仅比较所需列的值,在本例中为“ITEM”键。
以下是实现此功能的方法:
function udiffCompare($a, $b) { return $a['ITEM'] - $b['ITEM']; } $arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');
这定义了自定义比较函数 udiffCompare减去正在比较的两行的“ITEM”值。此减法的结果确定行是否相等、不同或哪一个更大。
通过将 udiffCompare 作为第三个参数传递给 array_udiff(),您实际上是在告诉函数使用此自定义比较函数根据“ITEM”列确定 $arr2 中的哪些元素与 $arr1 中的元素不同。
此代码的输出将是一个仅包含$arr2 中不存在于 $arr1 中的元素,保留原始数组结构:
Array ( [3] => Array ( [ITEM] => 4 ) )
此演示允许您根据另一个数组中的特定列值有效过滤一个数组,同时保留原始数组结构。
以上是如何根据特定列高效比较和过滤关联数组?的详细内容。更多信息请关注PHP中文网其他相关文章!