如果条件与和/或在PHP中不工作

时间:2019-02-05 12:22:19

标签: php if-statement

我在php中使用if语句。 我想要的是-如果用户未输入登录ID或usernamd + password, 然后显示错误消息-但不起作用, 这是我的代码-

if($add_data['social_id']!="" || $add_data['username'] && $add_data['password']=="")
    {
        //login with social id code here
    }
elseif($add_data['username'] && $add_data['password']!="" || $add_data['social_id']=="")
    {
        //login with usernamd and password code here
    }
else
    {
        //please enter social id or username with password
    }   

3 个答案:

答案 0 :(得分:1)

如果尚未设置变量!="",则使用true可能返回null != ""。您可以使用empty()

来克服这一问题
if(!empty($add_data['social_id']))
{
    //login with social id code here
}
elseif(!empty($add_data['username']) && !empty($add_data['password']))
{
    //login with username and password code here
}
else
{
    //please enter social id or username with password
}

答案 1 :(得分:0)

$add_data['username'] && $add_data['password'] == ""并没有达到您的期望。您无法通过这种方式分解条件。

相反,使用$add_data['username'] == "" && $add_data['password'] == ""

要提高可读性,请对$add_data['username'] && $add_data['password'] != ""替换为$add_data['username'] != "" && $add_data['password'] != ""进行相同的操作(但此条件将按预期工作,请参见下文)

执行if ($var && $var2 == "")将检查$var 是否为假,以及$var2是否等于""

不是虚假(也称为true)与有别于

  • 布尔值FALSE本身
  • 整数0(零)
  • 浮点数0.0(零)
  • 空字符串和字符串“ 0”
  • 一个零元素数组
  • 特殊类型NULL(包括未设置的变量)
  • 从空标签创建的SimpleXML对象

其他所有值都视为true

来源:Official documentatoin

答案 2 :(得分:-1)

您需要在if语句的每个属性之后添加一个表达式/值:

 if($add_data['social_id']!="" || $add_data['username'] != "" && $add_data['password']=="")
        {
            //login with social id code here
        }
    // add beside $add_data any expression
    elseif($add_data['username'] != ""  && $add_data['password']!="" || $add_data['social_id']=="")
        {
            //login with usernamd and password code here
        }
    else
        {
            //please enter social id or username with password
        }   

第二,我不明白您要把什么条件放进去?如果社交ID不为null,并且用户名或密码也不为null?或应全部输入。

请分享一下,以便我向您发送确切的代码。