GET变量的PHP值是0?

时间:2012-06-17 14:23:22

标签: php url null get

我在创建简单的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>

4 个答案:

答案 0 :(得分:6)

这是PHP。您使用.而不是+连接字符串。

正如@MarcB在评论中所说 - 换句话说,你正在对字符串进行数学加法,因此PHP正在将你的kroltan字符串转换为0

String operators in PHP

答案 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愉快地将非数字字符串转换为零。