我有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);
我在页面顶部,但错误仍然打印出来。
有谁知道我如何防止打印错误?
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 运算符
$image_1_url = $meta['image_1_url'] ?? '';
如果您在上述示例中收到通知,则意味着您正在使用索引或 vairable,而无需在代码中的任何位置定义它。您的示例:
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
节省您的时间。
如果您收到通知,请记住您的代码将不起作用。它只有在收到警告时才能工作。如果忽略警告,代码将执行。