PHP Get Url String If Statement

时间:2015-12-22 20:03:34

标签: php string url if-statement get

我想创建一个带有if语句的Get Url字符串。

这是我的代码:

$value = $_GET['value'];
$fullname = "John Doe";
$email = "johndoe@email.com";

echo "value: " . $value;

if($value = "fullname")
    echo "fullname: " . $fullname;
elseif($value = "email")
    echo "email: " . $email;
else
    echo "fullname: " . $fullname;
    echo "<br>";
    echo "email: " . $email;

即使我只输入全名或电子邮件值,它每次都会返回全名和电子邮件。我究竟做错了什么?感谢

3 个答案:

答案 0 :(得分:2)

您正在分配值而不是比较它们:

if($value = "fullname")

这始终是true

您需要以下内容:

if($value === "fullname")

这同样适用于您的elseif,尽管不是您永远不会达到此目的。

如果超过1行,你还应该使用括号来标记每个部分中需要执行的块(尽管我建议总是这样做......)。

答案 1 :(得分:1)

你的结局&#39;否则&#39;需要大括号来保持最后两行不会每次都运行。 (并且使用单个等号将始终执行赋值操作并被评估为&#39; true&#39;)

if($value == "fullname") {
    echo "fullname: " . $fullname;
}
else if($value == "email") {
    echo "email: " . $email;
}
else {
    echo "fullname: " . $fullname;
    echo "<br>";
    echo "email: " . $email;
}

答案 2 :(得分:0)

单个=是赋值运算符。您正在做的是将$value设置为"fullname"。你想要的是等于运算符==或相同的运算符===所以你最终得到了

if ($value === "fullname")
  // Do stuff

有关php中运算符的更多信息:http://php.net/manual/en/language.operators.comparison.php

编辑: 回答你的评论

  

谢谢。真的很感激帮助。有没有办法避免第3行的错误消息($ value = $ _GET [&#39;值&#39;]没有isset?每次实现isset时,无论输入的值是什么,它总是返回两个全名和电子邮件

您可以执行以下操作:

if ((!isset($fullname) && !isset($email)) || !isset($value)) {
    die("No name or email was included in the request");
}

$value = $_GET['value'];
$fullname = "John Doe";
$email = "johndoe@email.com";

echo "value: " . $value;

if ($value = "fullname") {
    echo "fullname: " . $fullname;
} elseif($value = "email") {
    echo "email: " . $email;
} else {
    echo "fullname: " . $fullname;
    echo "<br>";
    echo "email: " . $email;
}