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