在显示可能或可能不存在从数据库检索的值,值,我的PHP代码有很多这样的:可能-未定义参数PHP函数
if (isset($data['a']))
$a = number_format($data['a']);
else
$a = '–';
if (isset($data['b']))
$b = number_format($data['b']);
else
$b = '–';
(简体例如; $data['a']
实际上是例如$data[$date][$part]['errors']
)。之后是<td><?= $a ?></td>
和<td><?= $b ?></td>
。
使用?:
而不是if
使代码垂直更紧凑但更丑陋。我想把这个功能,所以我可以有
$a = someFunction($data['a']);
$b = someFunction($data['b']);
而不是,这是更好。但是,将一个未设置的变量作为函数参数会导致两个警告,一个用于unset变量,另一个用于缺少函数参数。如果我做了明显的作用,并与@
称之为...
function formatIfAvail($num, $dec = 0)
{
if (isset($num))
return number_format($num, $dec);
return '–';
}
....
$a = @formatIfAvail($data['a']);
...它工作,但是这似乎是一个不好解决。 有没有办法做到这一点,没有任何@
?如果PHP有C++预处理程序我会用的#define这样的事情...
#define NUMFMT(n, d) (isset(n) ? number_format(n, d) : '–')
....
$a = NUMFMT($data['a'], 0);
...但当然,事实并非如此。
在变量中使用@而不是在函数中。有些函数(@ $ data ['a']) – 2015-02-09 17:08:30
除了使用@或者带错误报告功能的全局方式外,没有办法抑制警告 – 2015-02-09 17:09:36
你怎么不知道'data ['a']'是否存在?您不应该忽略输入检查,特别是如果您的数据是用户输入的话。 – Halcyon 2015-02-09 17:13:25