Я столкнулся с этой ошибкой, но исправлять его путем добавления элемента к системному web\httpHandler разделу моего web.config файла. Я добавил следование:
<add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
Использование if ($ var === true)
или if ($ var)
- это не вопрос стиля, а вопрос правильности. Поскольку if ($ var)
совпадает с if ($ var == true)
. И сравнение ==
не проверяет тип. Итак, 1 == true
истинно, но 1 === true
ложно.
Что касается скорости, я согласен с Нильсом, она, вероятно, незначительна.
Что касается того, какой оператор if лучше всего использовать для тестирования, ответ, вероятно, зависит от ожидаемого преобразования и значений $ переменная может иметь.
Если $ переменная использует 0 и 1 в качестве флага истина / ложь, тогда 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';
}
Я не очень разбираюсь в технических деталях PHP, но в первом случае
if($variable === true)
переменная $ должна иметь тот же тип, что и true, чтобы оператор if был истинным. Другими словами, $ variable не только принимает значение true, но также должно быть логическим. Итак, это 2 операции, проверка значения и проверка типа.
Во втором случае
if($variable)
$ переменная должна только разрешиться в true. Таким образом, происходит только проверка значения. Я предполагаю, что на это у компьютера уходит немного меньше времени.
С практической точки зрения: разница в скорости, вероятно, незначительна.
=== действительно помогает в strstr / stristr, когда первая игла находится в позиции 0 в стоге сена. Если вы не используете === или! ==, у вас может быть ошибка.
$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;
Просто факт:
Время PHP -R '$ r = true; для ($ i = 0; $ i <10000000; $ i ++) {Если ($ r == true) {}} '
время PHP -R' $ r = true; для ($ i = 0; $ i <10000000; $ i ++) {Если ($ r) {}} '
Второй быстрее, чем первый.