Search code examples
phploopsforeachlaravel-5sequential

PHP: foreach applying an increase of one number to every loop


I have this:

foreach ($itemsCart as $value) {

            $items['itemId' . $value->id]               = $value->id;
            $items['itemDescription' . $value->id]      = $value->name;
            $items['itemAmount' . $value->id]           = $value->price;
            $items['itemQuantity' . $value->id]         = $value->quantity;
        }

This output:

[itemId9] => 9
[itemDescription9] => Product
[itemAmount9] => 5.00
[itemQuantity9] => 1

[itemId5] => 5
[itemDescription5] => Other Product
[itemAmount5] => 8.00
[itemQuantity5] => 2

I need a sequential number in key of array, but in every loop:

[itemId1] => 9
[itemDescription1] => Product
[itemAmount1] => 5.00
[itemQuantity1] => 1

[itemId2] => 5
[itemDescription2] => Other Product
[itemAmount2] => 8.00
[itemQuantity2] => 2

Sequential number (started from 1) every loop of the foreach...

If I set i++, i get:

[itemId1] => 9
[itemDescription2] => Product
[itemAmount3] => 5.00
[itemQuantity4] => 1

[itemId5] => 5
[itemDescription6] => Other Product
[itemAmount7] => 8.00
[itemQuantity8] => 2

what can I do? I have lost many hours trying to solve this.. :(

Thanks


Solution

  • What do you mean by If I set i++, i get... ?

    Because something like that should work :

    $i = 0;
    foreach ($itemsCart as $value) {
        $i++;
        $items['itemId' . $i]           = $value->id;
        $items['itemDescription' . $i]  = $value->name;
        $items['itemAmount' . $i]       = $value->price;
        $items['itemQuantity' . $i]     = $value->quantity;
    }
    

    Something simpler, if your $itemCart keys are integers 0, 1, ... :

    foreach ($itemCart as $key => $value)
    {
        $items['itemId' . $key] = $value->id;
        $items['itemDescription' . $key]  = $value->name;
        $items['itemAmount' . $key]       = $value->price;
        $items['itemQuantity' . $key]     = $value->quantity;
    }