порядок исполнения php - PullRequest
1 голос
/ 26 марта 2012

Скажем, у вас есть такое состояние;

if ($condition_1 && $condition_2)

и у вас есть возможность записать его как

if ($condition_2 && $condition_1)

Теперь, если условие_1 занимает 1 мс, чтобы выяснить, является ли оно истинным или ложным, а условие_2, с другой стороны, занимает намного больше времени, скажем, 1000 мс !, каким образом вы бы записали вышеуказанное условие как? медленнее справа или слева?

Я предполагаю, что когда одно из условий оказывается ЛОЖНЫМ, PHP не потрудится проверить, является ли другое условие ИСТИНОЙ. Если бы это было так, это было бы самым большим сюрпризом века!

Ответы [ 2 ]

9 голосов
/ 26 марта 2012

Условные выражения оцениваются слева направо.Поместите самое короткое условие в крайнее левое положение.Вы правы, если крайнее левое условие в этом случае, если утверждение становится ложным, следующее условие вообще не проверяется.

2 голосов
/ 26 марта 2012

C и C++ перерыв при первом FALSE в AND состоянии.Это также относится и к PHP.Итак, я бы предложил поставить более короткий в первую очередь.Этот пример наглядно демонстрирует случай:

function short(){
    return false;
}

function long(){
    sleep(5);// sleep for 5 secondsd
    return true;
}

if ( short() && long() ){
    echo "condition passed";
}else{
    echo "condition failed";
}

Это почти сразу напечатает «условие не выполнено» без ожидания в течение 5 секунд ....

...