我试图用if(!empty)PHP中的函数抛光一些代码,但我不知道如何将它应用于多个变量,当它们不是一个数组时(我以前必须这样做)所以如果我有:
$vFoo = $item[1];
$vSomeValue = $item[2];
$vAnother = $item[3];
Run Code Online (Sandbox Code Playgroud)
然后我想只在有值时才打印结果.这适用于一个变量,所以你有:
if (!empty($vFoo)) {
$result .= "<li>$vFoo</li>";
}
Run Code Online (Sandbox Code Playgroud)
我尝试了一些类似的东西
if(!empty($vFoo,$vSomeValue,$vAnother) {
$result .= "<li>$vFoo</li>"
$result .= "<li>$vSomeValue</li>"
$result .= "<li>$vAnother</li>"
}
Run Code Online (Sandbox Code Playgroud)
但是,当然,它不起作用.
imk*_*vid 35
你可以创建一个新的包装器函数,它接受多个参数并通过empty()传递每个参数.它的工作方式类似于isset(),仅当所有参数都为空时返回true,并在到达第一个非空参数时返回false.这是我想出来的,它在我的测试中起作用.
function mempty()
{
foreach(func_get_args() as $arg)
if(empty($arg))
continue;
else
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
旁注:"mempty"中的前导"m"代表"多重".您可以随意调用它,但这似乎是最短/最简单的命名方式.除此之外......说起来很有趣.:)
更新10/10/13:我应该添加,不像empty()或isset(),如果你传递一个未定义的变量或一个不存在的数组索引,这个mempty()函数将哭泣血腥谋杀.
mar*_*rio 18
你需要写一个条件链.使用&&测试多个变量,每个自己的empty()测试:
if (!empty($vFoo) && !empty($vSomeValue) && !empty($vAnother)) {
Run Code Online (Sandbox Code Playgroud)
但是您可能希望将其拆分为三个ifs,因此您可以单独应用额外的文本:
if (!empty($vFoo)) {
$result .= "<li>$vFoo</li>";
}
if (!empty($vSomeValue)) {
$result .= "<li>$vSomeValue</li>";
}
if (!empty($vAnother)) {
Run Code Online (Sandbox Code Playgroud)
empty()只能接受一个论点.isset()另一方面,可以接受多个; 当且仅当设置了所有参数时,它才会返回true.但是,这只会检查它们是否已设置,而不是它们是否为空,所以如果你需要专门排除空字符串,那么你将不得不做kelloti建议的那样做.
使用布尔/逻辑运算符:
if (!empty($vFoo) && !empty($vSomeValue) && !empty($vAnother)) {
$result .= "<li>$vFoo</li>"
...
}
Run Code Online (Sandbox Code Playgroud)
此外,您可能希望加入这些or而不是and.如您所见,这可以为您提供相当大的灵活性.