【问题标题】:PHP Get Url String If StatementPHP 获取 URL 字符串 If 语句
【发布时间】:2015-12-22 20:03:33
【问题描述】:

我想用 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;

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

【问题讨论】:

  • 它将始终回显最后两行,因为您没有使用括号,请参阅PHP if-manual。您还将fullname 分配给$value,因为您只使用一个分配的等号(=),而不是比较的两个(==)。
  • 谢谢。非常感谢您的帮助。有什么办法可以避免第 3 行的错误消息($value = $_GET['value'] without the isset?每次我实现 isset 时,无论输入什么值,它总是返回全名和电子邮件。跨度>
  • 您可以使用三元运算符:$value = (isset($_GET['value']) ? $_GET['value'] : null); - 就像if/else,只是更紧凑。见How to write a PHP ternary operator

标签: php string url if-statement get


【解决方案1】:

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

if($value = "fullname")

这总是true

你需要这样的东西:

if($value === "fullname")

这也适用于您的elseif,尽管不是这样,您永远也达不到。

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

【讨论】:

  • 谢谢。非常感谢您的帮助。有什么办法可以避免第 3 行的错误消息($value = $_GET['value'] without the isset?每次我实现 isset 时,无论输入什么值,它总是返回全名和电子邮件。跨度>
【解决方案2】:

你的结尾'else'需要大括号来防止最后两行每次都运行。 (并且使用单个等号将始终执行赋值操作并被评估为“真”)

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

【讨论】:

  • 谢谢。非常感谢您的帮助。有什么办法可以避免第 3 行的错误消息($value = $_GET['value'] without the isset?每次我实现 isset 时,无论输入什么值,它总是返回全名和电子邮件。跨度>
【解决方案3】:

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

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

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

编辑: 回答您的评论

谢谢。非常感谢您的帮助。有什么办法可以避免第 3 行的错误消息($value = $_GET['value'] without the 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;
}

【讨论】:

  • 谢谢。非常感谢您的帮助。有什么办法可以避免第 3 行的错误消息($value = $_GET['value'] without the isset?每次我实现 isset 时,无论输入什么值,它总是返回全名和电子邮件。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
相关资源
最近更新 更多