0

我了解到我已经养成了一个不好的编程习惯,即在比较运算符中使用它们之前并不总是定义变量或属性。我以前从未注意到这一点,但现在我在不同的环境中开发,我得到了通知。

例如:

if ($test_var)
    echo "Do some stuff";

这很容易根据需要issetempty根据需要来解决。

但是,我也倾向于在比较中使用这些未声明的变量/属性,如下所示:

if (($test_int == 1) && ($test_str == "hello world"))
    echo "Do some stuff";

issetorempty语句重写要困难得多。我可以把整个东西包装在一堆 . issets,但是你很快就会得到嵌套的意大利面条代码,这会影响可读性和可维护性。

我了解为什么会发生这种情况,但我正在寻求帮助,将最佳解决方案作为一般做法。

抱歉,如果此解决方案之前已发布。我看了看,但我能找到的只是关于为什么会出现通知的问题,而不是具体如何写比较。

4

2 回答 2

1

我认为最好的方法是通过在程序之前分配某种值来初始化您进行比较的这些变量null

$chicken = null;

// some code that generates $egg value

if ($egg) {
    $chicken = "Leghorn";
}


if ("Leghorn" === $chicken) {
    echo "I say ..I say...boy...";
}

因此,如果$chicken = null;在上面的示例中缺少,并且值为$eggfalse,您通常会收到 PHP 通知。

于 2013-01-02T03:16:20.003 回答
0

如果您只是想摆脱通知,请检查您的错误报告设置: http: //php.net/manual/en/function.error-reporting.php

(如果您有一个在每个页面顶部运行的脚本,您可以执行以下操作:error_reporting(E_ALL & ~E_NOTICE);

否则,您可以在顶部附近声明变量(可能是一个更好的主意)。

无关:这是个人的事情,但如果你把你的 IF 语句用大括号括起来,以后会更容易破译!

于 2013-01-02T02:56:52.987 回答