【问题标题】:If condition and empty variable如果条件和空变量
【发布时间】:2014-01-20 04:52:12
【问题描述】:

我有这个代码:

If(!isset($a) || empty($a))
{
    // code to run when $a not set or empty;
}
Elseif ($a==0)
{
     //code to run when $a is equal 0
}
Else
{
      //code to run in all other scenarios
}

问题在于,当 $a 等于 0 时,empty($a) 为真并且第一个代码运行。我需要第二个运行。我该怎么做?

【问题讨论】:

  • 嗯,究竟是什么条件?你到底想测试什么?
  • 我想看看是否设置了$a,如果是,运行第一个代码。如果它是空的(这意味着空字符串或设置为空)运行第一个代码。如果等于 0,则运行第二个代码,如果是其他任何值(负数或正数),则运行第三个代码。不明白为什么不能理解。

标签: php variables if-statement boolean


【解决方案1】:
if (isset($a) && $a == 0)
    {
    //code to run when $a is equal 0
    }
elseif (empty($a))
    {
    // code to run when $a not set or empty;
    }
else
    {
    //code to run in all other scenarios
    }

【讨论】:

  • 我对这个很兴奋。但是当我尝试它时,它没有用。当您设置 $a="" 时,第一个代码运行,即使第二个代码应该运行
  • @user2395238,什么?我看到您的逻辑与您的代码完全不同。请更新您的答案。
【解决方案2】:

试试这个:

if((!isset($a) || empty($a)) && $a !== 0)
{
    // code runs when $a not set or empty and $a is not 0;
}
elseif ($a === 0)
{
     //code runs when $a is equal 0
}
else
{
      //code runs in all other scenarios
}

更新: 更改为类型安全比较。

【讨论】:

  • 这也不起作用。如果我设置 $a="" 第二个代码运行,即使我希望它运行第一个。似乎在 PHP 中 $a="" 和 $a=0 是一样的。
  • 我找到了解决方案,您的答案是最接近的,并激励我尝试我尝试过的方法。如果您修改您的(添加等号)以匹配我的,我会接受您的回答
  • 没错——在这种情况下最好使用类型安全比较。感谢您的建议。
【解决方案3】:

替换它并尝试

If(!isset($a) || $a=='') 
{
// code to run when $a not set or empty;
}
Elseif ($a==0)
{
     //code to run when $a is equal 0
}
Else
{
      //code to run in all other scenarios
}

【讨论】:

  • 你不能用$a==''替换empty
  • 为什么?根据我的知识,空白和空白都是相同的。你能告诉我为什么我不能代替吗?
  • 不幸的是,如果我设置 $a=0 第一个条件评估为 TRUE,那是因为 $a=='' 为真。我刚刚测试过。
【解决方案4】:

我找到了解决办法:

if (!isset($a) || (empty($a) && $a!==0))
{
    //run code if $a is not set or is empty
}
elseif ($a===0)
{
    //run code if $a is 0;
}
else
{
    //all other scenarios
}

【讨论】:

    【解决方案5】:

    空函数为0时返回false(0为整数)。

    所以你的代码应该是

    If(!isset($a))
    {
        // code to run when $a not set or empty;
    }
    Elseif ($a==0)
    {
         //code to run when $a is equal 0
    }
    Else
    {
          //code to run in all other scenarios
    }
    

    【讨论】:

    • empty 当值为 0 作为字符串或整数时返回 false
    • 空字符串必须被认为是空的。在您的情况下,它将是 所有其他情况
    猜你喜欢
    • 2018-12-23
    • 1970-01-01
    • 2022-11-02
    • 2019-04-11
    • 1970-01-01
    • 2011-07-24
    • 2016-01-04
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多