防止在PHP中显示“未定义”错误

时间:2016-02-01 01:47:14

标签: php wordpress

我有PHP代码试图读取很多可能存在或不存在的值。每个失败的读取都会显示“未定义”错误。我可以用类似

之类的东西来保持沉默
if(!empty($meta['image_1_url'])) $image_1_url = $meta['image_1_url']; 

但我宁愿PHP不要抱怨他们。我已经注释掉了

<?php

    //ini_set('display_errors', 1);
    //error_reporting(E_ALL);

我位于页面顶部,但错误仍然打印出来。

有谁知道如何防止打印错误?

2 个答案:

答案 0 :(得分:7)

 error_reporting(E_ALL & ~E_NOTICE);

以上内容将显示错误和警告,但不会显示通知。

https://secure.php.net/manual/en/function.error-reporting.php

请注意,通知可能很有用。一般来说,最好以这样的方式编写代码,除非出现问题,否则不应生成

除了您提供的示例之外,您还可以使用三元运算符:

$image_1_url = isset($meta['image_1_url']) ? $meta['image_1_url'] : '';

即使未设置image_1_url,上述代码也不会生成通知。

从PHP 7开始,您还可以使用Null Coalesce Operator

$image_1_url = $meta['image_1_url'] ?? '';

答案 1 :(得分:0)

如果您收到有关上述示例的通知,则表示您正在使用索引或可变,而无需在代码中的任何位置定义它。你的例子:

if(!empty($meta['image_1_url'])) $image_1_url = $meta['image_1_url']; 

可以使用isset()进行检查。是否设置值,如果未设置值,则在变量中定义空值。

if(isset($meta['image_1_url']) && !empty( $meta['image_1_url'] )){

     $image_1_url = $meta['image_1_url']; 
}
else{
    $image_1_url = '';
}

对于防止未定义通知的其他问题,请注意在开发线上error_reporting上的良好做法可以节省您的时间。

如果您收到通知,请记住您的代码无效。它只有在收到警告时才有效。如果忽略警告,您的代码将会执行。