[英]array_merge & in_array not what I need
我有一個這樣的數組;
$array = array(
array('id' => 1, 'amount' => 104,
array('id' => 46, 'amount' => 200,
array('id' => 1004, 'amount' => 200
);
和另一個這樣的數組;
$array2 = array(
array('id' => 206, 'amount' => 50,
array('id' => 1, 'amount' => 96,
array('id' => 88, 'amount' => 2
);
如何添加檢查array2中的'id'是否存在於$ array中。 如果它以$ array2到$ array的“數量”進行,如果不存在,則將ID和金額附加到$ array的末尾。 我希望輸出結果如下所示:
array {
[0] id = 1 amount = 200
[1] id = 46 amount = 200
[2] id = 1004 amount = 200
[3] id = 206 amount = 50
[4] id = 88 amount = 2
}
我試過使用array_merge和in_array,但似乎無法使它正常工作。
您可以嘗試這樣的事情:
foreach ($array as $key => $value) {
$found = false ;
foreach ($array2 as $key2 => $value2) {
if ($value2['id'] == $value['id']) {
$array2[$key2]['amount'] += $value['amount'];
$found = true;
break;
}
}
if (!$found) {
$array2[] = $value ;
}
}
print_r($array2);
輸出:
Array
(
[0] => Array
(
[id] => 206
[amount] => 50
)
[1] => Array
(
[id] => 1
[amount] => 200
)
[2] => Array
(
[id] => 88
[amount] => 2
)
[3] => Array
(
[id] => 46
[amount] => 200
)
[4] => Array
(
[id] => 1004
[amount] => 200
)
)
編輯注釋后,使用最終檢查來更新代碼,以刪除重復的行:
foreach ($array as $key => $value) {
$found = false ;
foreach ($array2 as $key2 => $value2) {
if ($value2['id'] == $value['id']) {
$array2[$key2]['amount'] += $value['amount'];
$found = true;
break;
}
}
if (!$found) {
$array2[] = $value ;
}
}
$final = [];
foreach ($array2 as $key1 => $value) {
$found = false ;
foreach ($final as $key2 => $value2) {
if ($value2['id'] == $value['id']) {
$final[$key2]['amount'] += $value['amount'];
$found = true;
break;
}
}
if (!$found) {
$final[] = $value ;
}
}
var_dump($final) ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.