如何在URL中$ _GET php变量

时间:2014-07-17 10:29:51

标签: php get url-parameters

我有这个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>

7 个答案:

答案 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)

这里使用的是“=”,用于为变量赋值。 看看这些的用法:

  1. “=”用于为某个变量赋值。
  2. “==”用于比较(无论数据类型如何)。例如,如果
  3.   

    $ var = 1,我们评估条件

         

    if($ var == TRUE)

    结果将为bool True,因为TRUE为1且FALSE始终为0。

    3。  “===”也基于数据类型进行比较。由于数据类型不同,上述条件将评估为Bool False。

答案 6 :(得分:-2)

您应该使用==代替=