是否可以使用没有单引号或双引号的数组,如$ array [key]?我认为这很糟糕,因为如果我不使用单引号或双引号,PHP会先寻找常量.我的一位同事告诉我,这没关系.
你们有什么感想?
Pas*_*TIN 42
它被认为没有问题 - 即使它在大多数情况下都能正常工作.
基本上,当PHP看到这个:
echo $array[key];
Run Code Online (Sandbox Code Playgroud)
它将搜索一个常量,定义为define
,被调用key
- 如果没有,则将获取该'key'
值.
但是,如果您的代码中有类似的内容:
define('key', 'glop');
Run Code Online (Sandbox Code Playgroud)
它不会
echo $array['key'];
Run Code Online (Sandbox Code Playgroud)
再也没有 相反,它将使用常量的值key
- 您的代码将与以下内容相同:
echo $array['glop'];
Run Code Online (Sandbox Code Playgroud)
最后,由于至少有两个原因,不在密钥的名称旁边加上引号是不好的:
define
因为错误的名字而不断变化;-)'key'
error_reporting
和display_errors
,仍然产生了告示/警告/错误,即使后来废弃)所以:在这一点上你不应该听那个人:他错了:它确实很重要.
如果你需要一些比人们在stackoverflow上告诉你的"更好"的"证据",你可以将他指向手册的这一部分,作为参考:为什么$ foo [bar]错了?
这是不是很好,而且添加到别人怎么说,这将引发在大多数情况下的错误:
8 Notice Use of undefined constant key - assumed 'key' in file: 'index.php' on line 46
Run Code Online (Sandbox Code Playgroud)
请参阅PHP手册中的"为什么$ foo [bar]错误?" 在此页面上的"数组做和不做"下:http://php.net/manual/en/language.types.array.php