我有这个PHP代码,并在单击指定的链接时尝试从url参数中获取变量language
的值。
我该怎么做?以下代码仅在第一个语句中获取Java
的值,而不是elseif
语句中的值。
if (isset($_GET['language'])) {
if ($_GET['language'] = 'Java') {
$q = 'title:(Java+Developer)';
}
elseif ($_GET['language'] = 'PHP') {
$q = 'title:(PHP+Developer)';
}
elseif ($_GET['language'] = 'JavaScript') {
$q = 'title:(JavaScript+Developer)';
}
}
链接:
<li><a href="programming/?language=Java">Java</a></li>
<li><a href="programming/?language=PHP">PHP</a></li>
<li><a href="programming/?language=JavaScript">JavaScript</a></li>
答案 0 :(得分:3)
=
和==
之间存在差异。一个用于分配,另一个用于比较。
在您的第一个if()
语句中,您将值Java
分配给$_GET['language']
,评估为Java
。这将是真的。
将比较中的单个=
更改为==
,您应该全部设置。
答案 1 :(得分:1)
您正在使用单个等号。这是一个赋值(就像定义变量时一样)。
您需要使用双等号==
。这就是你测试平等的方法。
$_GET['language'] == SOME_STRING
此外,我建议使用switch statement代替多个if
语句:
if ( isset( $_GET[ 'language' ] ) ) {
switch( $_GET[ 'language' ] ){
case "Java":
$q = 'title:(Java+Developer)';
break;
case "PHP":
$q = 'title:(PHP+Developer)';
break;
case "JavaScript":
$q = 'title:(JavaScript+Developer)';
break;
}
}
使用switch
语句将使此代码更易于维护,并且还可以添加额外条件(其他语言)。
答案 2 :(得分:0)
检查等号!将“=”替换为“==”
答案 3 :(得分:0)
尝试使用此代码
if(isset($ _ GET [&#39; language&#39;])){
if ($_GET['language'] == 'Java') {
$q = 'title:(Java+Developer)';
}
elseif ($_GET['language'] == 'PHP') {
$q = 'title:(PHP+Developer)';
}
elseif ($_GET['language'] == 'JavaScript') {
$q = 'title:(JavaScript+Developer)';
}
}
答案 4 :(得分:0)
您要将值Java
分配给$_GET["language"]
,它始终返回true。您必须将$_GET["language"]
的值与字符串进行比较。使用==
或===
运算符进行比较。
if ($_GET["language"] === "Java") {
/* here be dragons */
}
使用Yoda Conditions来捕捉这种错误也是一种好习惯。
if ("Java" === $_GET["language"]) {
/* here be dragons */
}
答案 5 :(得分:0)
这里使用的是“=”,用于为变量赋值。 看看这些的用法:
$ var = 1,我们评估条件
if($ var == TRUE)
结果将为bool True,因为TRUE为1且FALSE始终为0。
3。 “===”也基于数据类型进行比较。由于数据类型不同,上述条件将评估为Bool False。
答案 6 :(得分:-2)
您应该使用==
代替=
。