将 if(!empty) 与数组中的多个变量一起使用

2022-08-30 21:24:00

我正在尝试使用PHP中的函数来完善一些代码,但是当它们不是数组时,我不知道如何将其应用于多个变量(就像我之前必须做的那样),所以如果我有:if(!empty)

$vFoo       = $item[1]; 
$vSomeValue = $item[2]; 
$vAnother   = $item[3];

然后,仅当存在值时,我才要打印结果。这适用于一个变量,因此您有:

 if (!empty($vFoo)) {
     $result .= "<li>$vFoo</li>";
 }

我尝试了一些类似于

if(!empty($vFoo,$vSomeValue,$vAnother) {
    $result .= "<li>$vFoo</li>"
    $result .= "<li>$vSomeValue</li>"
    $result .= "<li>$vAnother</li>"
}

但是,当然,它不起作用。


答案 1

您可以创建一个新的包装器函数,该函数接受多个参数并通过 empty() 传递每个参数。它的工作方式类似于 isset(),仅当所有参数都为空时才返回 true,并在到达第一个非空参数时返回 false。这是我想到的,它在我的测试中起作用。

function mempty()
{
    foreach(func_get_args() as $arg)
        if(empty($arg))
            continue;
        else
            return false;
    return true;
}

附注:“mempty”中前导的“m”代表“多个”。你可以随心所欲地称呼它,但这似乎是命名它的最短/最简单的方法。此外。。。说起来很有趣。:)

2013年10月10日更新:我可能应该补充一点,与 empty() 或 isset() 不同,如果你给它传递一个未定义的变量或一个不存在的数组索引,这个 mempty() 函数会哭泣血腥的谋杀。


答案 2

您需要编写一个条件链。用于测试多个变量,每个变量都有自己的测试:&&empty()

if (!empty($vFoo) && !empty($vSomeValue) && !empty($vAnother)) {

但是您可能希望将其拆分为三个 if,以便您可以单独应用额外的文本:

if (!empty($vFoo)) {
   $result .= "<li>$vFoo</li>";
}
if (!empty($vSomeValue)) {
   $result .= "<li>$vSomeValue</li>";
}
if (!empty($vAnother)) {

推荐