1

启用错误消息后,E_NOTICEPHP 不喜欢以下代码,除非变量$mdDialog$mdToast已经定义:

if ($mdDialog || $mdToast) {
    $ngMaterial = true;
}

为了避免E_NOTICE错误,我必须写:

if (isset($mdDialog) || isset($mdToast)) {
    $ngMaterial = true;
}

问题是,使用上面的代码,如果我在$mdDialog = false;前面的某个地方有一行,那么该语句将是真实的,这不是想法。为了避免这种情况,我必须写:

if ((isset($mdDialog) && $mdDialog) || (isset($mdToast) && $mdToast)) {
    $ngMaterial = true;
}

这太长了,感觉过分了,只是为了避免 E_NOTICE 消息。

所以,问题是,我应该关心这些E_NOTICE消息吗?检查可能不存在的变量的值有什么不好吗?

4

3 回答 3

4

empty在这种情况下可能很有用。如下所示:

if (!empty($mdDialog) || !empty($mdToast)) {
    $ngMaterial = true;
}

阅读更多关于的信息。

于 2018-07-18T17:31:29.387 回答
1

或者如果变量是一个字符串,你也可以使用这个:

if(strlen($mdDialog) < 1 || strlen($mdToast) < 1){
     $ngMaterial = true;
 } 
于 2018-07-18T17:34:20.493 回答
0

避免生成通知总是比设置error_reporting()忽略它们更好。也就是说,在这种情况下,确保在开始时设置变量几乎总是比检查它们是否在您引用它们的每个地方都设置要容易。即,如果您执行以下操作,则 var 永远不会设置为 false 条件:

if (some condition) {
    $flag = true;
}

而是做这样的事情:

if (some condition) {
    $flag = true;
} else {
    $flag = false;
}

或这个:

$flag = false;
if (some condition) {
    $flag = true;
}

或这个:

$flag = (some condition) ? true : false;

或这个:

$flag = (bool) (some condition);

现在你不需要isset()or empty(),当你得到一个 时E_NOTICE,它实际上是有意义的。

于 2018-07-18T17:46:18.453 回答