Подтвердить что ты не робот

Улучшить цикл PHP для цикла

При использовании типичного цикла for PHPStorm предлагает изменить его для лучшей производительности. Я действительно не понимаю этого предложения. Как мне его изменить?

Предложение PHPStorm

4b9b3361

Ответ 1

for($i = 0; $i <= count($data); $i++){}

В этом примере для каждой итерации он снова должен count($data).

for($i = 0, $iMax = count($data); $i <= $iMax; $i++){}

В этом примере это нужно только count($data).

Это различие.

Ответ 2

Если вы выполняете count() внутри цикла for, то он выполняет каждую итерацию, а вызов функции - служебные служебные данные.

Если вместо этого вы вызываете count() перед циклом for и присваиваете результат переменной, а затем сравниваете с переменной в цикле for, вы не получаете служебные данные функции, поэтому она быстрее

Ответ 3

С помощью цикла, который вы делаете, каждая итерация должна оценивать count($data). Если у вас много элементов в списке, это может занять некоторое время (относительно), чтобы подсчитать эти элементы, и это нужно делать каждый раз.

Подсказка заключается в том, что вы должны установить переменную в значение count ($ data) в начале, а затем использовать эту переменную в качестве предела цикла, когда она оценивается только один раз.

Это можно сделать двумя способами:

$loopMax = count($data);
for ($i = 0; $i <= $loopMax; $i++) {
    // Your code here
}

Или

for ($i=0, $loopMax = count($data); $i <= $loopMax; $i++) {
    // your code here
}