我希望$bar
成为" 1"如果两者:
网址有ANY参数值,
除非它的foo参数等于a
:
尝试了这个并出现语法错误:
if ( (!empty($_GET)) && (isset($_GET['foo']!=="a")) )
{
$bar = "1";
}
答案 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";
}