0

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

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

4

2 回答 2

6

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

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

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

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

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

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

当您想提供默认值但又不想弄乱已经存在的值时,数组加法运算符非常有用。

于 2013-05-28T07:30:43.020 回答
0

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

这应该是单行的。:)

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

于 2013-05-28T07:33:01.703 回答