php将变量作为键获取,没有赋值

时间:2009-03-25 09:54:19

标签: php

如果我在浏览器中输入以下内容:

   http://domain.com/script.php?1234

script.php有以下脚本:

   $key=array_keys($_GET);
   echo $key[0];

输出将是:

   1234

(我正试图废除丑陋的东西?r = 1234如果这样可行,那将是完美的。)

我的问题是,这是正确的还是编程不好?

5 个答案:

答案 0 :(得分:4)

你也可以这样做

echo $_SERVER['QUERY_STRING']

至于创建友好的URL,有更好的方法来做到这一点。

参见例如:$_GET and URL Rewriting for PHP

答案 1 :(得分:1)

没有什么是正式的,如果它适合你,那么一定要使用它。顺便说一句,问题就是匹配什么价值。

如果你有example.com?1234&4567那么你将有两个没有键名的值来告诉你它是什么。

但如果你想废除丑陋的网址,你应该看看mod_rewrite

Beginners guide

Another beginners guide

答案 2 :(得分:1)

你不应该使用这种方法。如果您不希望显示变量,可以使用URL rewrite使URL看起来不错。另外,不要忘记清理$ _GET:)

实际上,在你的例子中,1234是你通过GET发送的变量,没有值,如果你想这样看。

答案 3 :(得分:1)

这是对的。该变量名为1234,没有任何值。这意味着

GET['1234'] == '';

您也可以写http://example.com?1234=10然后结果将是

GET['1234'] == '10';

答案 4 :(得分:1)

  

我的问题是,这是正确的还是编程不好?

没有记录查询 - 参数 - 无值的工作,但它可能会继续在实践中。

如果您只想抓取整个查询字符串而不将其解析为参数,那么最好的办法就是直接说:

echo $_SERVER['QUERY_STRING']

(无论你做什么,不要直接回应它!要么通过例如将它转换为整数来清理值,或者,如果你想允许任意字符串,则通过反斜杠输出它适合于JavaScript的转义 - 转义引号和反斜杠。)