У меня есть цикл, который необходимо пройти через каждый элемент. Поэтому, естественно, цикл foreach кажется лучшей идеей. Однако мне нужно добавить элемент в массив, когда он итерации. Я попробовал следующее без везения.Динамическое добавление к текущему массиву foreach
foreach ($allitems as $item) {
//Do some stuff here
if ($value === true)
$allitems[] = 'New item';
}
Я узнал Еогеасп петли, кажется, использовать который ссылается копию массива, поэтому редактирование массива не регистрирует в цикле.
Обходной заключается в использовании старшего стиля в то время как петли следующим образом:
while (list($key, $item) = each($allitems)) {
//Do some stuff here
if ($value === true)
$allitems[] = 'New item';
}
Очевидно, что цикл Еогеаспа бы лучше и более эффективен. Является ли это возможным? Или же структура является наилучшим решением.
Я уверен, что я пробовал это без везения. Он успешно присоединился к массиву. Однако foreach не смог получить доступ к новым элементам. После этого я смог получить к ним доступ. – foochow
Попробуйте пример и посмотрите, работает ли он – jh314
. Попробовал ваш пример, и он работает, поэтому я немного поиграл. Оказывается, это произошло из-за того, что я вызывал append как я был на последней итерации моего массива ('$ item == 4' в примере). Я читал ранее, что приращения foreach затем выполняются. Таким образом, петля предположила, что это было сделано. – foochow