$_GET和$_POST里面要不要加引号?

vickemble 2009-08-18 10:20:57
$_GET和$_POST里面要不要加引号?



$_GET[‘ABC’]
$_POST[‘ABC’]


$_GET["ABC"]
$_POST["ABC"]



$_GET[ABC]
$_POST[ABC]





是上面对,中间对,还是下面对?
...全文
286 点赞 收藏 22
写回复
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
countstars 2009-08-19
[Quote=引用 6 楼 arserangel 的回复:]
但从性能方面考虑,$_GET['AB'] 要优于 $_GET["AB"],$_POST['AB']要优于 $_POST["AB"]
[/Quote]
没有这种说法,PHP没有明确表示单引号效率比双引号高,并且还可能双引号效率比单引号高。
回复
countstars 2009-08-19
$_GET[AB],其中键值AB是一个常量,如果error_reporting(E_ALL)将会有一个notice,如果常量未定义PHP则认为它是一个字符串,但是你不能保证他不在前面被定义,如果定义为别的值那么$_GET[AB]可能就不是你想要的东西了。PHP允许键值表示成变量、字符串、常量、函数等,如:
$key = 'ab';
define('AB', 'ab');
function AB() {
return 'ab';
}
$_GET[$key]; //相当于$_GET['ab'];同$_GET["ab"];
$_GET[AB]; //相当于$_GET['ab'];同$_GET["ab"];
$_GET[AB()]; //相当于$_GET['ab'];同$_GET["ab"];
字符串使用单引号和双引号的区别只在于双引号中允许使用\n \r \t等转意字符,且可以包含变量,如
$a = 'a';
$key = "{$a}b"; //$key 值为 ab
回复
phpboy 2009-08-19
[Quote=引用 21 楼 tfxg 的回复:]
都沒問題,但最好加單引號
[/Quote]
应该都是没有问题的,加上最好
回复
tfxg 2009-08-19
都沒問題,但最好加單引號
回复
加单引号,这个比其他两个情况的速度快上至少4倍
回复
学习了,加单引号!!
回复
foolbirdflyfirst 2009-08-19
最好加上引号。
回复
xiaoxue_427 2009-08-19
[Quote=引用 11 楼 arserangel 的回复:]
引用 8 楼 countstars 的回复:
引用 6 楼 arserangel 的回复:
但从性能方面考虑,$_GET['AB'] 要优于 $_GET["AB"],$_POST['AB']要优于 $_POST["AB"]

没有这种说法,PHP没有明确表示单引号效率比双引号高,并且还可能双引号效率比单引号高。


我印象中,如果是双引号,编译器首先要查找、编译其中可能出现的变量,如果是单引号,则直接当做字符串处理,是否这样?

谢谢!这是我的印象,不知有误否,还望指导
[/Quote]

正确
支持用单引号
回复
最好单引
回复
countstars 2009-08-19
[Quote=引用 12 楼 xuzuning 的回复:]
要加!
至少程序规范性是这样要求的

不只是$_GET、$_POST,所有的关联数组的关联键都是这个要求

纯字符串用单引号括起
含有变量的字符串用双引号括起,以便php完成求值的动作

6#的解答是正确的,而8#的补充是错误的
[/Quote]
请解释一下为什么我说的是错误的,随便下结论是会误导别人的.
回复
countstars 2009-08-19
[Quote=引用 13 楼 lgzxz999 的回复:]
引用 11 楼 arserangel 的回复:
引用 8 楼 countstars 的回复:
引用 6 楼 arserangel 的回复:


我印象中,如果是双引号,编译器首先要查找、编译其中可能出现的变量,如果是单引号,则直接当做字符串处理,是否这样?

谢谢!这是我的印象,不知有误否,还望指导

是这样的
[/Quote]
建议看看这篇文章,或者看看源代码,不要建立在老版本的PHP的基础上
http://www.phpchina.com/html/27/n-34627.html
针对PHP 5.2及5.3的基准测试显示,虽然双引号使用窜改(interpolation)而单引号使用连锁(concatenation),这两个的速度是完全一致的(甚至双引号常常会更快一些)。当使用没有包含变量的普通字符串时,使用双引号的性能要明显占优。
回复
lgzxz999 2009-08-19
[Quote=引用 11 楼 arserangel 的回复:]
引用 8 楼 countstars 的回复:
引用 6 楼 arserangel 的回复:


我印象中,如果是双引号,编译器首先要查找、编译其中可能出现的变量,如果是单引号,则直接当做字符串处理,是否这样?

谢谢!这是我的印象,不知有误否,还望指导
[/Quote]
是这样的
回复
xuzuning 2009-08-19
要加!
至少程序规范性是这样要求的

不只是$_GET、$_POST,所有的关联数组的关联键都是这个要求

纯字符串用单引号括起
含有变量的字符串用双引号括起,以便php完成求值的动作

6#的解答是正确的,而8#的补充是错误的
回复
[Quote=引用 8 楼 countstars 的回复:]
引用 6 楼 arserangel 的回复:
但从性能方面考虑,$_GET['AB'] 要优于 $_GET["AB"],$_POST['AB']要优于 $_POST["AB"]

没有这种说法,PHP没有明确表示单引号效率比双引号高,并且还可能双引号效率比单引号高。
[/Quote]

我印象中,如果是双引号,编译器首先要查找、编译其中可能出现的变量,如果是单引号,则直接当做字符串处理,是否这样?

谢谢!这是我的印象,不知有误否,还望指导
回复
ldyanstar 2009-08-19
支持二楼
回复
linus_liu2000 2009-08-19
肯定要加, 单双引号都可
回复
不加引号也可以:

$_GET[AB]
$_POST[AB]

但是,在这种情况下,系统先是把 AB 当作常量的,即: $_GET[常量AB]和$_POST[常量AB],只有在上下文里找不到常量 AB 是,才把 AB 当作 $_GET和$_POST 的索引引用。

所以,推荐:

$_GET['AB']
$_POST['AB']

$_GET["AB"]
$_POST["AB"]

但从性能方面考虑,$_GET['AB'] 要优于 $_GET["AB"],$_POST['AB']要优于 $_POST["AB"],所以最佳方案还是:

$_GET['AB']
$_POST['AB']
回复
fiwiner 2009-08-18
前两个对
回复
CunningBoy 2009-08-18
单双引号都可以,不加引号不行
回复
fengqipiaobo 2009-08-18
支持2楼!
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告