我有两个产品数组,它们的格式完全相同,如下所示:
$products = array(
[0] => array(
['product_id'] => 33
['variation_id'] => 0
['product_price'] => 500.00
),
[1] => array(
['product_id'] => 48
['variation_id'] => 0
['product_price'] => 600.00
),
)
我希望能够根据产品 ID 仅返回在第二个数组中找不到的那些产品的列表。
我只关心在第二个数组中找不到的那些,而不关心添加到第一个数组中的其他数组,因此 array_diff 似乎无法解决问题。
最佳答案
我怀疑你想要类似 array_udiff 的东西.这使您可以指定如何使用回调函数比较两个数组。您只需创建一个基于产品 ID 进行比较的回调。
我认为这可以满足您的需求,因为 array_diff 系列函数仅将第一个数组与其余数组进行比较,它不会返回 array2(或 3 或 4)具有而 array1 没有的元素。
<?php
$products = array(
0 => array(
'product_id' => 33,
'variation_id' => 0,
'product_price' => 500.00
),
1 => array(
'product_id' => 48,
'variation_id' => 0,
'product_price' => 600.00
)
);
$products2 = array(
1 => array(
'product_id' => 48,
'variation_id' => 0,
'product_price' => 600.00
),
2 => array(
'product_id' => 49,
'variation_id' => 0,
'product_price' => 600.00
)
);
function compare_ids($a, $b)
{
return $b['product_id'] - $a['product_id'];
}
var_dump(array_udiff($products, $products2, "compare_ids"));
?>
输出:
array(1) {
[0]=>
array(3) {
["product_id"]=>
int(33)
["variation_id"]=>
int(0)
["product_price"]=>
float(500)
}
}
关于php - 多维数组中特定键的数组差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505922/