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) |