首页 > 解决方案 > PHP在foreach中获取数量总和以在for循环中使用它

问题描述

我试图获得总量

    The data from array would look like this;
    [desc]  [quantity]
    [foo1], [   2    ]
    [foo2], [   2    ]
....

这是“代码”:

    function saveInvoiceDetail(array $wreceipt_items, $warehouse = '', $tracking = ''){
    global $con;

    $y = 0;

    foreach ($wreceipt_items as $wreceipt_item){
        $desc = mysqli_real_escape_string( $con, trim( $wreceipt_item['desc'] ) );
        $quantity = mysqli_real_escape_string( $con, trim( $wreceipt_item['quantity'] ) );

        $query = "INSERT INTO wreceipt_items (`id`, `warehouse`, `desc`, `quantity`)
                VALUES (NULL, '$warehouse', '$desc', '$quantity')";
    $y++;
        mysqli_query($con, $query);
    }

$quantity_sum = array_sum($wreceipt_item['quantity'])

    $x = $quantity_sum; //repeat this insert ($quantity_sum) times
    for ($i = 1; $i <= $x; $i++){
            $query2 = "INSERT INTO control (`id`, `warehouse`, `tracking`)
                VALUES ('', '$warehouse-$i', '$tracking')";
            mysqli_query($con, $query2);
    }

}

期望的结果:执行 '$query2' X 次,其中 X = $quantity_sum; 这可能吗?我想不通。

注意:“foreach”和“for”有效,但我不能使用没有“数量总和”的“for”

编辑-固定

function saveInvoiceDetail(array $wreceipt_items, $warehouse = '', $tracking = ''){
    global $con;

    $y = 0;

    foreach ($wreceipt_items as $wreceipt_item){
        $desc = mysqli_real_escape_string( $con, trim( $wreceipt_item['desc'] ) );
        $quantity = mysqli_real_escape_string( $con, trim( $wreceipt_item['quantity'] ) );

        $query = "INSERT INTO wreceipt_items (`id`, `warehouse`, `desc`, `quantity`)
                VALUES (NULL, '$warehouse', '$desc', '$quantity')";
    $y++;
        mysqli_query($con, $query);
    }

$quantity_sum = array_sum(array_column($wreceipt_items, 'quantity'));

    $x = $quantity_sum; //repeat this insert ($quantity_sum) times
    for ($i = 1; $i <= $x; $i++){
            $query2 = "INSERT INTO control (`id`, `warehouse`, `tracking`)
                VALUES ('', '$warehouse-$i', '$tracking')";
            mysqli_query($con, $query2);
    }

}

标签: phploopsfor-loopforeachsum

解决方案


一种解决方案是使用array_column从中提取所有quantity$wreceipt_items并将它们求和:

$quantity_sum = array_sum(array_column($wreceipt_items, 'quantity'));

推荐阅读