检查非空变量

时间:2014-06-12 09:08:22

标签: php

我必须检查,说20个变量。 &安培;我真的很困惑这两种方法,以检查所有是否非空。

第一个是你的基本方法:

if($var1!= null && $var2!= null && $var3!= null && $var4!= null...) {
    // Do this
}

第二种方法是使用我从here得到的数组:

$vars = array('var1','var2','var3','var4');

$errors = array();         
foreach ($vars as $var => $label)
{
    if (isset($$var) && strlen($$var) == 0)
        $errors[$var] = $label . 'is empty';
}

if(is_array($errors) && count($errors) > 0)
{
    echo 'Please fix the following errors: ';
    echo '<ul><li>' . implode('</li><li>', $errors) . '</li></ul>';
}
else
{   
        //Do this
}

现在,就像我之前说过的那样,我的情况中的变量大约是20。哪种方法(如果有更多,我很乐意听到它们)你建议会更好(<如果变量的数量小到20,那么如果我可以添加,那就更像PHP了? 另外,请好好解释一下,因为我还是个新手。

由于

3 个答案:

答案 0 :(得分:3)

第二次尝试没问题,但这一行:

if (isset($$var) && strlen($$var) == 0)

可能是:

if (empty($$var))

..取决于您的需求。如果使用empty(),则已将变量设置为:

  • &#34;&#34; (空字符串)
  • 0(0为整数)
  • 0.0(0作为浮动)
  • &#34; 0&#34; (0作为字符串)
  • NULL
  • FALSE
  • array()(空数组)
  • $变种; (声明的变量,但没有值)

将被视为

答案 1 :(得分:2)

假设您有10个这样的vars,其命名约定与您的问题相同。你可以做到

<?php

for ($i = 1; $i <= 10; $i++) {
    $var = "var$i";
    if (!empty($$var)) {
        // this one at $i is set
    } else {
        // not set
    }
}

您可以更改循环的上限以计算您拥有的变量数。无需先手动生成名称数组。但是如果你有这么多具有​​相同名称的变量并且只是索引不同那么你最好首先使用数组。

答案 2 :(得分:1)

您可以使用empty功能。

function noneEmpty($array) {
    foreach ($array as $variable)
        if (empty($variable))
            return false;
    return true;