我在创建简单的PHP脚本时遇到问题。 PHP中的$_GET["give"]
变量始终为0,但我确实在URL中定义了它。如果没有定义,我的脚本会重定向。
if (isset($_GET["give"])&&$_GET["give"]!="") {
echo "give GET detected<br />";
$user = $_GET["give"];
echo $_GET["give"]+$user+"<br />";
}
header("Location: /diamonds/"); //this document, but removing arguments.
网址很好,/?give=kroltan
,它应该回应kroltan。但相反,我在浏览器中得到了这个:
give GET detected <br>
0
它甚至不回显$user
变量,尽管它与$_GET["give"]
的值相同。之后也没有<br>
答案 0 :(得分:6)
这是PHP。您使用.
而不是+
连接字符串。
正如@MarcB在评论中所说 - 换句话说,你正在对字符串进行数学加法,因此PHP正在将你的kroltan
字符串转换为0
。
答案 1 :(得分:1)
通过使用加号,PHP认为它正在处理数字,因此将字符串更改为数字。这导致整数值为零。因此,您将始终获得零值。由于字符串的值为零。
如果你想组合字符串,你应该使用点而不是加号。
所以而不是:
echo $_GET["give"]+$user+"<br />";
你应该使用
echo $_GET["give"] . $user . "<br />";
顺便说一下,代码总是会重定向,因为你没有使用else语句,为什么要为$ user分配$ _GET ['give']的值并将它们合并到下一行?这看起来很奇怪。
答案 2 :(得分:0)
在PHP中,+
运算符用于代数加法,而.
用于字符串连接。
答案 3 :(得分:0)
您在+
中使用数字加法(.
)运算符而不是字符串连接($_GET["give"]+$user+"<br />"
)。 PHP愉快地将非数字字符串转换为零。