我想创建一个带有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;
即使我只输入全名或电子邮件值,它每次都会返回全名和电子邮件。我究竟做错了什么?感谢
答案 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;
}