如何创建这种双重条件?

时间:2015-02-09 17:30:27

标签: php

我希望$bar成为" 1"如果两者: 网址有ANY参数值, 除非它的foo参数等于a

尝试了这个并出现语法错误:

if ( (!empty($_GET)) && (isset($_GET['foo']!=="a")) )
{
$bar = "1";
}

3 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。完成你的方式你需要这样的东西:

if(!empty($_GET) && (!isset($_GET['foo']) || $_GET['foo'] !== 'a'))

此代码显示:if get is not empty and (either foo is not set or foo is not equal to a).

但是,无论$bar如何,您仍然需要将$_GET设置为一个值,因此为了清晰和简化代码,我建议将默认值设置为$bar如果$_GET['foo']等于“a”或$_GET不为空,则更改其值。这将使一切更容易理解。类似的东西:

//set a default value
$bar = 0;
//if the url has any parameter
if(!empty($_GET)){
    //set bar to 1
    $bar = 1;
    //unless the url has foo and foo is equal to 'a'
    if(isset($_GET['foo']) && $_GET['foo'] == 'a'){
        //set it to a different value
        $bar = 2;
    }
}

//now using $bar down here won't throw a notice error for not being
//defined and will be set to the correct value, with easy enough logic
//for anyone to follow.

答案 1 :(得分:0)

isset($_GET['foo'])

总是返回布尔值。所以考虑这个问题。

答案 2 :(得分:0)

我认为问题出现在isset中,首先验证是否定义了GET ['foo']然后如果值与“a”不同

if ( (!empty($_GET)) && isset($_GET['foo']) && ($_GET['foo'] !=="a") )
{
    $bar = "1";
}