При использовании типичного цикла for
PHPStorm предлагает изменить его для лучшей производительности. Я действительно не понимаю этого предложения. Как мне его изменить?
Улучшить цикл PHP для цикла
Ответ 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
}