在 PHP 中使用 array[key] 可以吗?

2022-08-30 18:10:29

是否可以像$array[key]那样使用没有单引号或双引号的数组?我认为这很糟糕,因为如果我不使用单引号或双引号,PHP首先会寻找常量。我的一位同事告诉我,这并不重要。

你们怎么看?


答案 1

它不被认为是OK的 - 即使它在大多数情况下都可以工作。


基本上,当PHP看到这个:

echo $array[key];

它将搜索一个常量,用 define 定义,称为 key -- 如果没有,if 将取值。'key'


但是,如果您的代码前面有类似的东西:

define('key', 'glop');

它不会采取

echo $array['key'];

不再 ;相反,它将使用常量的值 - 并且您的代码将与:

echo $array['glop'];


最后,不把引号放在钥匙的名字周围是不好的,至少有两个原因:

  • 有一种风险是它不会做你期望的事情 - 这是非常糟糕的
    • 今天可能...
    • 但是下周/月/年呢?
    • 也许,有一天,你会用错误的名字来维持一个常量;-)define
  • 它对性能不好:
    • 在使用之前,它必须搜索一个常量'key'
    • 而且,正如评论中所说,它会生成通知(即使您禁用error_reportingdisplay_errors,即使以后丢弃,仍然会生成通知/警告/错误)

所以:在这一点上,你不应该听那个家伙:他错了:这确实很重要


如果你需要一些“证据”,比人们在stackoverflow上告诉你的“更好”,你可以给他指出手册的这一部分,作为参考:为什么$foo[bar]错了?


答案 2

这是不对的,并且要添加其他人所说的内容,在大多数情况下会触发错误:

8 Notice Use of undefined constant key - assumed 'key' in file: 'index.php' on line 46

请参阅 PHP 手册中此页面上“数组 do's 和 don't”下的“为什么$foo[bar] 错误?”部分:http://php.net/manual/en/language.types.array.php


推荐