Это с этим справится:
foreach ($lijst['palen'] as $valuepalen) {
foreach ($optellen as $hoogtevalue) {
echo $valuepalen."x Bekaclip palen (48mm / lengte ".$hoogtevalue".cm \n";
}
}
Второе. По двум причинам
Меньше, чем (или иногда <=) обычный способ, которым большей частью записи кодера они, и лучше придерживаться конвенции если возможный-! =, вероятно, заставит большинство кодеров посмотреть дважды, чтобы проверить, существует ли что-то нечетное в цикле, тогда как <будет немедленно понят.
! = зависит от точного условия. Если бы внутренняя часть цикла изменяется во время обслуживания, и я случайно увеличил в цикле затем, Вы закончили бы с бесконечным циклом. Обычно всегда лучше сделать Ваше условие завершения максимально широким - это просто более устойчиво.
2, конечно, причина почему 1.
Я сказал бы <
поскольку это получает более широкий набор условий. Предположим, что n не был постоянным, но не возвращен из функции, которая в редких случаях возвратилась-1. В таком случае у Вас был бы намного более длинный цикл (пока интервал не повторяется к значению-ve!) с! = версия цикла.
Используя condition <
намного лучше, потому что это уменьшает возможность переступания через Ваше значение сигнальной метки и попадения в бесконечный цикл.
Как дали в вопросе, оба цикла эквивалентны. В реальном коде, однако, это типично, что вещи немного более сложны, и в этом случае, "я <n" условие склонен быть крошечным более безопасным битом. Если, например, я мог бы увеличиться больше чем на один, это могло бы пойти мимо n и затем "я! = n" версия привел бы к вечному циклу.
Это - случай безопасного программирования. Это универсально не принято: некоторые люди предпочитают удостоверяться вещи сбой максимально эффектно так, чтобы ошибки были найдены вначале. Защитный стиль может скрыть небольшие проблемы как этот. Однако, если Вы хотите поймать все ошибки, Вы могли бы также пойти полностью:
int n = 5;
int i = 0;
while (i != n) {
int old_i = i;
// the real stuff of the loop here
++i;
assert(i == old_i + 1);
}
(Или еще лучше используйте язык, который поддерживает synxtax для определения пред - и постусловия и инварианты цикла исходно.)
Книга "C Прерывания и Ловушки" Andrew Koenig (см. http://en.wikipedia.org/wiki/C_Traps_and_Pitfalls для начинающих), вероятно, интересна Вам, если Вам нравится размышлять об этом виде вопроса.
Я обычно делаю второй способ использовать <. Но думая об использовании! = с тех пор stl итераторы в C++ прокладывает себе путь.
Второе. Это будет всегда завершаться в какой-то момент (предполагающий, что Вы не делаете ничего забавного как проигрывание со значением счетчика в цикле).
Я никогда не видел используемое первое, по крайней мере, не таким образом.
Я предпочел бы использовать <с тех пор просто смотря на код, можно сказать увеличивающийся цикл, он создает резервную копию того, что Вы используете i ++.
Если Вы используете i ++ и <и по некоторым причинам (другой кодер, опечатка, человеческая ошибка), Ваш код изменяет инкремент на меня - Вы немедленно знали бы, что цикл не оценивается, как с! = это будет работать, так или иначе делая это менее тривиальным для отладки.
Я не вижу, что это имеет значение, не там более важные вещи волноваться о?
Я всегда использую последнего, и это - то, что я видел больше всего.
Кто-то, несомненно, подстрелит меня по нему хотя....
Я полагаю, что это - лучшая альтернатива, если Вы оптимизируете для скорости:
int n = 5;
for(int i = n;i > 0;i--)
{
//executing 5times
}
Причина этого состоит в том, что сравнение с 0 быстрее.
"я <n" лучше. Поскольку, если Вы используете "меня! = n" и в немного заключают Вашу начальную букву в корпус, я являюсь более крупным, чем n, Вы введете бесконечный цикл.
Я говорю, что это зависит от типа переменной итератора. Если бы Вы знаете, что это - целое число, я использовал бы второе, потому что можно сказать
Цикл, пока я меньше, чем n
То, которое я думаю, легче считать для большинства программистов, включая меня. Если Вы не знаете тип переменной итератора, необходимо сделать настолько наименьшее количество предположений о ее возможностях насколько возможно. operator<
может не быть доступно для i
: Если это - какой-либо итератор кроме итератора произвольного доступа, operator<
как гарантируют, не будет доступен. В этом случае я использовал бы operator!=
.
Я постарался бы не предпочитать опцию <
просто, потому что Вы могли случайно "переступить" через значение конца. Я думаю, что аргумент испорчен. Поскольку, если Вы действительно случайно переступали, затем это - ошибка, и она должна быть замечена как можно скорее (Сбой быстро).