簡體   English   中英

array_merge&in_array不是我需要的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM