76 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: For Loop | |||
|  | localeTitle: Для цикла | |||
|  | --- | |||
|  | ## Для цикла
 | |||
|  | 
 | |||
|  | Оператор PHP `for` состоит из трех выражений и оператора: | |||
|  | 
 | |||
|  | `for ((initialization); (condition); (final-expression)) statement` | |||
|  | 
 | |||
|  | ### Описание
 | |||
|  | 
 | |||
|  | *   инициализация | |||
|  |     *   Запуск до первого выполнения цикла. | |||
|  |     *   Это выражение обычно используется для создания счетчиков. | |||
|  |     *   Переменные, созданные здесь, привязаны к циклу. Как только цикл закончен, это исполнение, они уничтожены. | |||
|  | *   состояние | |||
|  |     *   Выражение, которое проверяется перед выполнением каждой итерации. | |||
|  |     *   Если это опущено, это выражение оценивается как `true` . | |||
|  | *   Окончательное выражение | |||
|  |     *   Выражение, которое запускается после каждой итерации. | |||
|  |     *   Обычно используется для увеличения счетчика. | |||
|  |     *   Но он может использоваться для запуска любого выражения. | |||
|  | *   заявление | |||
|  |     *   Код должен повторяться в каждой итерации цикла. | |||
|  | 
 | |||
|  | Любое из этих трех выражений или утверждение может быть ограничено. | |||
|  | 
 | |||
|  | Выражения могут содержать несколько выражений, разделенных запятой. | |||
|  | 
 | |||
|  | В выражении (condition) будут вычислены все выражения, разделенные запятыми. | |||
|  | 
 | |||
|  | Результат получается из последнего. | |||
|  | 
 | |||
|  | Для циклов обычно используются для подсчета определенного количества итераций для повторения утверждения. | |||
|  | 
 | |||
|  | ### Общие проблемы
 | |||
|  | 
 | |||
|  | #### Превышение границ массива
 | |||
|  | 
 | |||
|  | При многократном индексировании по массиву легко превзойти границы массива (например, попытайтесь ссылаться на 4-й элемент массива из 3 элементов). | |||
|  | 
 | |||
|  | ```php | |||
|  | // This will cause an error.  | |||
|  |  // The bounds of the array will be exceeded.  | |||
|  |  $arr = array(1,2,3);  | |||
|  |   | |||
|  |  for ($i = 0; $i <= count($arr); $i++) {  | |||
|  |     var_dump($arr[$i]);  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | Это приведет к выводу: | |||
|  | 
 | |||
|  | ```txt | |||
|  | int(1) int(2) int(3) NULL  | |||
|  | ``` | |||
|  | 
 | |||
|  | Есть способы исправить этот код. | |||
|  | 
 | |||
|  | Задайте условие либо `$i < count($arr)` либо `$i <= count($arr) - 1` . | |||
|  | 
 | |||
|  | #### Проблемы с производительностью
 | |||
|  | 
 | |||
|  | Вышеприведенный код может стать медленным, так как размер массива выбирается на каждой итерации. | |||
|  | 
 | |||
|  | Чтобы исправить эту проблему, можно поместить размер массива в переменную. | |||
|  | 
 | |||
|  | ```php | |||
|  | //create the $size variable with a second expression comma separated  | |||
|  |  for ($i = 0, $size = count($arr); $i < $size; ++$i) {  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Больше информации
 | |||
|  | 
 | |||
|  | *   [PHP.net - Структуры управления](https://secure.php.net/manual/en/control-structures.for.php) |