PHP Arrays循环和创建多维数组

时间:2017-07-23 11:02:58

标签: php arrays multidimensional-array

我在下面列出了一系列项目

array (
        [0] => array(
            'order' => 'order001', 
            'qty' => 90 
        ), 
        [1] => array(
            'order' => 'order002', 
            'qty' => 100 
        ) 
    )

我还有一个从上面的列表中取出的数量(Q),数组必须从上到下循环,甚至不跳过单个项目。

循环将遍历第一项以查看它是否可以获得所请求的总数,如果第一个循环不能满足总数,那么它将返回从第一个项目存储到某处然后移动的总数(T)到数组中的下一个项目,使用一个新值,让它说(QT)并查看是否可以在下一个项目中找到数量。

现在问题是我实际上无法弄清楚如何保持并将数组作为列表返回,如下例所示。

假设我需要总共120个。

Array(
        Array(
            'order' => 'order001',
            'qty' => 90
            ),
        Array(
            'order' => 'order002',
            'qty' => 30
        )
    );

1 个答案:

答案 0 :(得分:-1)

也许是这样的? https://iconoun.com/demo/temp_tonywiz.php

<?php // demo/temp_tonywiz.php
/**
 * Working with arrays
 *
 * https://stackoverflow.com/questions/45264342/php-arrays-looping-and-creating-multi-dimensional-arrays
 */
error_reporting(E_ALL);
echo '<pre>';


$qty = 120;
$arr = [ ['order' => 'order001', 'qty' => 90], ['order' => 'order002', 'qty' => 100] ];
$out = [];

foreach ($arr as $sub)
{
    if ($qty <= 0) break;
    if ($sub['qty'] <= $qty)
    {
        $out[] = $sub;
        $qty = $qty - $sub['qty'];
    }
    else
    {
        $sub['qty'] = $qty;
        $out[] = $sub;
    }
}
print_r($arr);
print_r($out);