繁体   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