Я использую PHP4 для проекта, над которым я работаю. Мне пришлось расширить этот код (который работает достаточно быстро для данных под рукой):
for ($i = 1; $i <= count($arr); $i++) {
$a = $arr[$i]['date'];
for ($y = 1; $y <= 10000000; $y++) {
$c = $arr[$i]['data'][$y];
// here I inserted another loop
}
}
Я вставил в него еще один цикл, вот так:
for ($k = $i + 1; $k <= count($arr); $k++) {
$next_is_empty = false;
$next_is_null = false;
if ($arr[$k]['data'][$y] == '') {
$next_is_empty = true;
break;
} elsif (is_null($arr[$k]['data'][$y])) {
$next_is_null = true;
break;
}
}
Код является более общей идеей, чем конкретный рабочий код, так как я пишу по памяти. Тем не менее, я думаю, что это достаточно точно для моих вопросов. Итак, этот цикл, который я вставил, работает в большинстве случаев нормально, но в некоторых он слишком медленный - как я могу ускорить его? Меня также интересуют общие правила исполнения, основанные на этом примере. Я знаю, что лучше избегать вложенных циклов, но почему, например, код работает достаточно быстро, если я помещаю переменные $next_is_empty/null
перед моим циклом (тогда решение неверное, но достаточно быстрое)? Я знаю, что нужно сделать больше переназначений, но почему они занимают так много времени?