Я подозреваю, что вы хотите что-то вроде array_udiff .Это позволяет вам указать, как сравнивать два массива, используя функцию обратного вызова.Вы просто создаете обратный вызов, который сравнивает на основе идентификатора продукта.
Я думаю, что это удовлетворяет тому, что вы хотите, потому что семейство функций array_diff сравнивает только первый массив с остальными, оно не возвращает элементы, которые array2 (илиили 4) иметь, что массив1 не имеет.
<?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)
}
}