我想比較的價值和關鍵嵌套的多維數組,所以我的情況是:比較嵌套多維數組
我需要比較兩個嵌套的多維數組,並找到數量在他們的價值觀方面的差異,更新這些量,而且還包括新的數組中的項,而不是舊的,例如:
,如果我有以下數據:
第一個數組:
Array (
[0] => Array ([name] => hey [qty] => 3)
[1] => Array ([name] => hello [qty] => 1)
[2] => Array ([name] => test [qty] => 1)
)
而且具有以下值的另一個嵌套多維數組:
第二個數組:
Array (
[0] => Array ([name] => hey [qty] => 5)
[1] => Array ([name] => hello [qty] => 5)
[2] => Array ([name] => PHP [qty] => 2)
)
我想只有在第二陣列和更新的新項目,通過鍵實現以下輸出它們的值基於第一和第二陣列項目的數量之間的差異,即:
期望的輸出
Array (
[0] => Array ([name] => hey [qty] => 2)
[1] => Array ([name] => hello [qty] => 4)
[2] => Array ([name] => PHP [qty] => 2)
)
我使用以下方法產生了差異,但請注意如何不添加PHP。我不太清楚如何在不添加它的情況下在我的內循環中檢查它。
<?php
$items = [
'hey',
'hey',
'hey',
'hello',
'test'
];
$arr = array_count_values($items);
$oldItems = array();
foreach ($arr as $name => $qty) {
$oldItems[] = compact('name', 'qty');
}
$newItems = [
['name' => 'hey', 'qty' => 5],
['name' => 'hello', 'qty'=> 5],
['name' => 'PHP', 'qty' => 2]
];
$diff = [];
foreach($newItems as $newItem) {
foreach($oldItems as $oldItem) {
if ($newItem['name'] == $oldItem['name']) {
//get quantity
$qtyDiff = $newItem['qty'] - $oldItem['qty'];
if ($qtyDiff > 0) {
$diff[$newItem['name']] = $qtyDiff;
}
}
}
}
print_r($diff); die();
我從這個腳本電流輸出如下:
Array (
[0] => Array ([name] => hey [qty] => 2)
[1] => Array ([name] => hello [qty] => 4)
)
任何幫助表示讚賞或改進意見。謝謝!
有你考慮使用['array_diff()'](http://php.net/manual/en/function.array-diff.php)? –
我肯定會對使用PHP內置數組函數感興趣,但在使用嵌套多維數組時不能100%確定如何實現它們,並且不可能將它們壓平(在我的用法中)。 – liamjnorman
文檔中有一個完整的示例。 –