忽略PHP严格中未设置的变量错误

时间:2013-05-28 07:28:41

标签: php

我正在我的本地开发机器上编写一个添加/编辑表单,它处于严格模式。根据用户如何到达此表单,他们可能有也可能没有包含表单信息的数组。问题是,如果我使用<?= $array['name'] ?>填写输入并且没有设置,则每个输入都会出错。我想快速而简单地做一些事情,因为在几个页面上有很多输入。以前我使用过<?= @$array['name'] ?>但希望有更好的解决方案,一旦这不需要我为每个输入键入<?= (isset($array['name'])?$array['name']:'') ?>(想象一下错别字的可能性)。

我想保留未定义的消息,因为它在其他地方很有用,它只在我不希望显示消息的特定变量(特别是页面上的单个数组)上。 Google没有提出一个好的解决方案,大多数答案都是改变错误报告级别。

2 个答案:

答案 0 :(得分:6)

您可以使用类似的内容为所有数组元素提供“空默认值”:

if (empty($array)) {
    $array = array_fill_keys(array('name', 'age', 'address', '...'), null);
}

您只需在脚本顶部使用一次。

如果有可能只使用某些的键设置到达页面(在这种情况下你不想覆盖其他键的值),你可以使用:< / p>

if (empty($array)) {
    $array = []; // PHP 5.4 syntax
}

$array += array_fill_keys(['name', 'age', 'address', '...'], null);

当您想要提供默认值但不会弄乱那些已经存在的值时,array addition operator非常有用。

答案 1 :(得分:0)

您可以简单地将error_reporting()设置为不会对这些内容抛出异常的级别。

这应该是一个单行。 :)

http://php.net/manual/en/function.error-reporting.php