2015-03-02 1 views
0

у меня есть это: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) каждый цикл из Еогеасп ...

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

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

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

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

Благодарности

+1

Если вы читаете из массива, не должен ли массив иметь уникальный идентификатор продукта? –

ответ

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

Кстати, мне не очень нравится писать такие индексы. Биметаллический массив, как сказал Марк Бейкер, может быть приятнее. – Niols

+0

Спасибо, человек, который работает! – Giovanne

1

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

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

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

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

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

+0

Спасибо! Это тоже отлично! – Giovanne

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

Спасибо! Это тоже хорошо работает !!!!! 3 разных способа работы, которые мне нужны. Спасибо вам всем. – Giovanne

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