使用数组 - 克隆

Working with arrays - clone

我有一个数组:

$obj = Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [qty] => 2
        )

    [1] => stdClass Object
        (
            [id] => 2
            [qty] => 1
        )
);

如何根据 qty 将数组转换为:

$obj2 = Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [qty] => 1
        )

    [1] => stdClass Object
        (
            [id] => 1
            [qty] => 1
        )
    [2] => stdClass Object
        (
            [id] => 2
            [qty] => 1
        )
);

谢谢!

遍历原始数组的每一行,然后对于数量的每个计数,将一个条目推送到具有当前行 ID 的新数组中。

// SETTING UP INITIAL DATA FOR EXAMPLE
$object1 = new StdClass();
$object2 = new StdClass();

$object1->id = 1;
$object1->qty = 2;

$object2->id = 2;
$object2->qty = 1;

$array = array(
    $object1,
    $object2
);
// END SETTING UP INITIAL DATA

$array2 = array();

foreach($array as $row)
{
    for($i = 0; $i < $row->qty; $i++)
    {
        $stdClass = new StdClass();
        $stdClass->id = $row->id;
        $stdClass->qty = 1;
        $array2[] = $stdClass;
    }
}

Live Example

这应该有效:

<?php
$obj = array(
    0 => (object) array(
        'id' => 1,
        'qty' => 2
    ),
    1 => (object) array(
        'id' => 2,
        'qty' => 1
    )
);

$obj2 = array();

foreach($obj as $v)
{
    if($v->qty > 1)
    {
        while($v->qty > 0)
        {
            $obj2[] = (object) array('id'=>$v->id, 'qty'=>1);
            --$v->qty;
        }
    }
    else
    {
        $obj2[] = $v;
    }
}

print_r($obj2);