Для циклов вида for (a ; b ; c)
может иметь несколько выражений через запятую в a
и c
. Таким образом, все в a
запускается до цикла, а все в c
запускается для каждой итерации. Итак, это:
for ($a = 0, $extarr = array(); $a < count($docs); ++$a, $extarr[] = $docs[$a - 1]);
По сути то же самое, что и это:
$extarr = array();
for ($a = 0; $a < count($docs); ++$a) {
$extarr[] = $docs[$a - 1]);
}
Первый редко используется, потому что его (как вы заметили) трудно прочитать, но он очень полезен для соревнований по коду. :)
Кроме того, когда часть b
вашего цикла является вызовом функции, вы обычно не хотите, чтобы он запускался на каждой итерации. Итак, вы можете сделать что-то вроде этого:
$count = count($docs);
for ($a = 0; $a < $count; ++$a) {
Или это:
for ($a = 0, $count = count($docs); $a < $count; ++$a) {
Для таких случаев, как count()
, это не имеет большого значения. Но если ваше условие является дорогим вызовом функции, вам нужно вытащить его из цикла.