Как изменить следующий элемент в цикле foreach(), во время цикла? Я думаю, что это имеет какое-то отношение к разговору с переменной по ссылке, но я не уверен, как это сделать. то есть:Изменить следующий элемент в массиве во время цикла foreach()
$arr = array(array('color' => 'red', 'type' => 'apple'),
array('color' => 'yellow', 'type' => 'banana'),
array('color' => 'purple', 'type' => 'grape')
);
foreach($arr as $k => $v) {
echo "<br> The ".$v['type'].' fruit is '.$v['color'];
// change the color of the next fruit?
if($v['type'] == 'apple') { $arr[$k+1]['color'] = 'green'; }
}
Я хотел бы, чтобы это сказать мне банан зеленый, но он упорно придерживается банана будет желтым ...
(UPDATE: исправлена глупая логической ошибка в моем оригинальном вопросе Ответ, помеченный ниже, верен.)
Это только одна часть решения (но тем не менее очень важно). Когда '$ v ['type'] == 'banana'' истинно, следующий фрукт, который модифицируется, является' grape'. Если банан должен быть зеленым, он должен быть '$ v ['type'] == 'apple''. –
Я неправильно понял, предположил, что когда оригинальный плакат ссылался на следующий элемент, он хотел изменить цвет винограда на зеленый. – ncremins
Ну, я не знаю. Использование ссылки решает ошибку программирования. Но он также заявил * Я хотел бы, чтобы это говорило мне, что банан зеленый *, и в этом случае он также имеет логическую ошибку. Но ваш ответ должен привести его к правильному пути. –