在顯示可能或可能不存在從數據庫檢索的值,值,我的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