Я знаю, что этот вопрос не очень важен. Однако мне было интересно:
Какие из следующих утверждений IF являются лучшими и самыми быстрыми в использовании?
<?php $variable = true; if($variable === true) { //Something } if($variable) { // Something } ?>
Я знаю, что === соответствует точно логическому значению. Однако есть ли какие-то улучшения?
Использование if ($var === true)
или if ($var)
– это не вопрос стиля, а вопрос правильности. Потому что if ($var)
совпадает с if ($var == true)
. И ==
сравнение не проверяет тип. Итак, 1 == true
истинно, но 1 === true
является ложным.
Что касается скорости, я согласен с Нильсом, это, вероятно, незначительно.
Насколько можно лучше проверить тест if, ответ, вероятно, зависит от ожидаемого литья и значений, которые может иметь переменная $.
Если переменная $ использует 0 и 1 как флаг true / false, тогда if ($ variable) или if (! $ Variable) будет работать, но если это целочисленный результат, как в strpos (), у вас возникнут проблемы … если возможно, я бы рекомендовал использовать фактическое логическое значение, а не 0/1.
… возможно, это поможет прояснить; прокомментируйте вариации $ var, чтобы увидеть различные результаты.
<?php $var = true; $var = 1; $var = false; $var = 0; if ( $var ) { echo 'var = true <br />'; } if ( $var === true ) { echo 'var is a boolean and = true'; } if ( !$var ) { echo 'var = false <br />'; } if ( $var === false ) { echo 'var is a boolean and = false'; }
Просто факт:
time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r == true) {} }'
time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r) {} }'
Второй – быстрее первого.
=== действительно полезно в strstr / stristr, когда первая игла находится в положении 0 в стоге сена. Если вы не используете === или! ==, у вас может быть ошибка на ваших руках.
$str = "four score and..."; $position = strstr($str,'four'); if($position===FALSE) return FALSE;
Я не очень глубоко разбираюсь в технических материалах PHP, но в первом случае
if($variable === true)
переменная $ должна иметь тот же тип, что и для оператора if. Другими словами, переменная $ имеет не только разрешение true, но также должно быть логическим. Таким образом, это 2 операции, проверка ценности и проверка типов.
Во втором случае
if($variable)
переменная $ должна иметь значение true. Так происходит только проверка стоимости. Я полагаю, что это занимает компьютер немного меньше времени.
Практически говоря: различия в скорости, вероятно, незначительны.