Различия между циклом while и циклом for в PHP?

Я читаю электронную книгу на PHP прямо сейчас, и автор отметил, что разница между циклом while и циклом for заключается в том, что цикл for будет подсчитывать, сколько раз он запускается.

Итак, сделайте следующее:

<?php for ($i = 1; $i < 10; $i = $i + 1) { print "Number $i\n"; } ?> 

Но не будет ли это таким же, как

 <?php $i = 1; while ($i < 10) { $i = $i + 1; print "Number $i\n"; } ?> 

Или есть другие отличия, которые он не указывал? (Помимо использования цикла while, когда вы не знаете, как долго условие останется верным, например, выбор строк из базы данных)

Я имею в виду, если это единственное различие, не могу ли я просто не использовать цикл for и вместо этого использовать цикл while?

Ты можешь? Да, конечно. Но нужен ли вам совсем другой вопрос.

Цикл for более читабельен в этом сценарии, и это определенно соглашение, которое вы найдете в нем практически на каждом языке, который имеет директивы looping. Если вы используете цикл while, люди задаются вопросом, почему вы не использовали цикл for .

«Для» более четко выражает ваши намерения

Функционально ваши два примера одинаковы. Но они выражают разные намерения.

  • while означает «я не знаю, как долго это условие будет продолжаться, но до тех пор, пока оно это делает, сделайте это».
  • for средств «У меня есть определенное количество повторений для вас».

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

for предпочтительны другие причины, почему

  • Это более краткий и содержит всю информацию о петле в одном месте
  • Он делает $i локальной переменной для цикла

Не забывайте, что foreach

Лично, цикл, который я использую чаще всего в PHP, является foreach . Если вы обнаружите, что делаете такие вещи:

 for ($i=0; $i < count($some_array); $i++){ echo $some_array[$i]; } 

… затем попробуйте следующее:

 foreach ($some_array as $item){ echo $item; } 

Быстрее вводить, читать легче.

Функционально цикл for эквивалентен циклу while; то есть каждый может быть переписан как другой, без изменения результата или побочных эффектов. Однако каждый из них имеет разные коннотации. Цикл while работает во время выполнения условия; условие статично, хотя обстоятельства меняются. Цикл for пробегает последовательность. Разница важна для программистов, но не для программ, так как выбор переменных имен важен для программистов, даже если их можно изменить для создания функционально эквивалентного кода. Одна конструкция цикла будет иметь больше смысла, чем другая, в зависимости от ситуации.

А для цикла

 for (INIT; CONDITIONS; UPDATE) { BODY } 

в основном такой же, как цикл while, структурированный следующим образом:

 INIT while (CONDITIONS) { BODY UPDATE } 

Хотя вы можете технически использовать тот или иной, бывают ситуации, когда они работают лучше, чем наоборот, и наоборот.

Это вопрос вкуса, личных предпочтений и удобочитаемости. Иногда цикл while работает лучше логически. Иногда, for .

Для моего личного правила, если мне не нужен переменный инициализатор, я использую некоторое while .

Но цикл foreach полезен по-своему.

Кроме того, в случае определения области PHP, где все переменные, не входящие в функции, являются глобальными, переменная будет продолжать жить после цикла независимо от того, какой цикл вы используете.