可能重复:
修复PHP空函数
在PHP中,empty()是一个很好的快捷方式,因为它允许您检查变量是否定义而不是同时为空.
当你不希望"0"(作为一个字符串)被认为是空的时,你会使用什么,但你仍然想要假,空,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
Run Code Online (Sandbox Code Playgroud)
我不认为我可以为此定义辅助函数,因为变量可能是未定义的(因此不能作为参数传递).
Cal*_*vin 28
这应该做你想要的:
function notempty($var) {
return ($var==="0"||$var);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我猜表只能在预览中使用,而不是在实际的答案提交中.因此,请参阅PHP类型比较表以获取更多信息.
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.
请参阅orlandu63的答案,了解如何通过引用将参数传递给自定义函数.
function isempty(&$var) {
return empty($var) || $var === '0';
}
Run Code Online (Sandbox Code Playgroud)
关键是&
运算符,它通过引用传递变量,如果它不存在则创建它.
答案是,不可能缩短我已有的内容。
抑制通知或警告不是我想要做的事情,所以我总是需要在检查值之前检查是否为empty()或isset(),并且您无法检查某些内容是否为empty()或isset()在一个函数内。