在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
我认为我不能为此定义辅助函数,因为变量可能未定义(因此无法作为参数传递)。
答案 0 :(得分:28)
这应该做你想要的:
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),则无法按值将未定义的变量传递给自定义函数。正如mercator指出的那样,你应该总是使用 E_ALL 来符合最佳实践。他提供的This link(评论#11)讨论了为什么不应该为性能和可维护性/调试原因使用任何形式的错误抑制。
请参阅orlandu63的答案,了解如何将参数传递给自定义函数by reference。
答案 1 :(得分:9)
function isempty(&$var) {
return empty($var) || $var === '0';
}
关键是&
运算符,它将变量传递给reference,如果它不存在则创建它。
答案 2 :(得分:3)
if ((isset($var) && $var === "0") || !empty($var)) { }
这样,如果变量设置为“0”,则输入if-construct,或者设置变量AND not = null(“0”,null,false)
答案 3 :(得分:2)
if(isset($var) && ($var === '0' || !empty($var)))
{
}
答案 4 :(得分:1)
答案是,不可能缩短我已有的东西。
禁止通知或警告不是我想要做的事情,所以我总是需要在检查值之前检查是否为empty()或isset(),并且您无法检查某些内容是否为空()或函数中的isset()。
答案 5 :(得分:0)
function Void($var)
{
if (empty($var) === true)
{
if (($var === 0) || ($var === '0'))
{
return false;
}
return true;
}
return false;
}
答案 6 :(得分:0)
if($ var!= null)