Possible Duplicate:
Fixing the PHP empty function
在 PHP 中,empty() 是一个很棒的快捷方式,因为它允许您同时检查变量是否已定义且不为空。
如果您不希望“0”(作为字符串)被视为空,但您仍希望 false、null、0 和“”被视为空,您会使用什么?
也就是说,我只是想知道您是否有自己的快捷方式:
if (isset($myvariable) && $myvariable != "") ;// do something
if (isset($othervar ) && $othervar != "") ;// do something
if (isset($anothervar) && $anothervar != "") ;// do something
// and so on, and so on
我不认为我可以为此定义辅助函数,因为变量可能未定义(因此不能作为参数传递)。
这应该做你想做的:
function notempty($var) {
return ($var==="0"||$var);
}
编辑:我猜表格只能在预览中使用,而不是在实际提交的答案中。所以请引用PHP type comparison tables了解更多信息。
notempty("") : false
notempty(null) : false
notempty(undefined): false
notempty(array()) : false
notempty(false) : false
notempty(true) : true
notempty(1) : true
notempty(0) : false
notempty(-1) : true
notempty("1") : true
notempty("0") : true
notempty("php") : true
基本上,对于除“0”之外的所有值,notempty() 与 !empty() 相同,它返回 true。
编辑:如果您使用
error_reporting(E_ALL),您将无法按值将 undefined variable 传递给自定义函数。正如 mercator 指出的那样,您应该
始终使用
E_ALL 以符合最佳实践。
This link (评论 #11)他讨论了为什么出于性能和可维护性/调试原因不应该使用任何形式的错误抑制。
请参阅 orlandu63 的回答,了解如何将参数传递给自定义函数 by reference .