PHP: foreach применяя увеличение на одно число к каждому циклу

У меня есть это:

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;
}

Этот вывод:

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

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

Мне нужен порядковый номер в ключе массива, но в каждом цикле:

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

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

Порядковый номер (начинается с 1) каждой петли foreach …

Если я установлю i ++, я получу:

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

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

А что я могу сделать? Я потерял много часов, пытаясь решить эту проблему .. 🙁

Спасибо

0

Решение

Что вы подразумеваете под Если я установлю i ++, я получу … ?

Потому что что-то подобное должно работать:

$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;
}

Что-то попроще, если ваш $itemCart ключи являются целыми числами 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;
}
0

Другие решения

Базовый вложенный массив может быть более подходящим, чем то, что вы пытаетесь сделать:

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

Вместо использования $ item-> ID, используйте $ i, который, как вы сказали, у вас есть.

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

++ увеличивает $ i после того, как он соединен со строкой. Вы можете опустить это и использовать $ i ++ между каждой строкой кода.

0

Просто используйте другую переменную в качестве счетчика:

$id = 1;
foreach ($itemsCart as $value) {
$items['itemId' . $id]               = $value->id;
$items['itemDescription' . $id]      = $value->name;
$items['itemAmount' . $id]           = $value->price;
$items['itemQuantity' . $id]         = $value->quantity;
$id += 1;
}
0
$i = 1;
foreach ($itemsCart as $value) {
$items['itemId' . $i]           = $value->id;
$items['itemDescription' . $i]  = $value->name;
$items['itemAmount' . $i]       = $value->price;
$items['itemQuantity' . $i]     = $value->quantity;
$i++;
}
0
По вопросам рекламы [email protected]