当前位置: 首页 > 面试题库 >

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

陈寒
2023-03-14
问题内容

使用不带单引号或双引号的数组(如$ array
[key])可以吗?我认为这很糟糕,因为如果我不使用单引号或双引号,PHP首先会寻找常量。我的一位同事告诉我,这没关系。

你们有什么感想?


问题答案:

*即使大多数情况下都可以使用, *也不能认为是可以的

基本上,当PHP看到以下内容时:

echo $array[key];

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

但是,如果您的代码前面有这样的内容:

define('key', 'glop');

不会

echo $array['key'];

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

echo $array['glop'];

最后,至少有两个原因,不把引号引起来是不好的:

  • 可能无法实现您的期望 -这是非常糟糕的
    • 今天可能会…
    • 但是下周/月/年呢?
    • 也许有一天,您将define使用 错误的 名称常量;-)
  • 这对性能不利:
    • 它必须在使用之前搜索常量 'key'
    • 并且,如评论中所述,它会生成通知 (即使您禁用error_reportingdisplay_errors,通知/警告/错误仍然会生成,即使以后丢弃也是如此)

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



 类似资料:
  • 问题内容: 在PHP中最好使用附加数组成员的方法, 要么 ? 尽管手册说您最好避免进行函数调用,但我阅读的速度也比慢得多。有哪些澄清或基准? 问题答案: 没有基准,但是我个人觉得看起来更干净,并且诚实地在毫秒内拆分头发是完全没有关系的,除非您计划将数十万个字符串添加到数组中。 编辑 :运行此代码: 第一种方法使用的速度比第二种方法快50%。 一些基准测试结果: 这并不奇怪,因为PHP手册指出了这一

  • 问题内容: 是否可以在每次执行循环时回显?例如: 我不想看到循环结束时打印所有内容,而是希望它每次都打印每个结果。 问题答案: 最终解决方案 这就是我发现的: Flush在Apache的mod_gzip或Nginx的gzip下不起作用,因为从逻辑上讲,它正在对内容进行gzip处理,并且这样做必须缓冲内容才能对其进行gzip处理。任何类型的Web服务器gzip压缩都会影响此。简而言之,在服务器端,我

  • 问题内容: 我已经搜索过网络,到目前为止,我所看到的是您可以一起使用和含义: 要么 是有效的,但是当我使用此代码时,得到的是: 对于第一个,除了与相同。对于第二个。 问题是什么?我不能使用和在一起?还是正常?是我可以检查连接是否全部有效的方法吗?() 问题答案: 不,你不能使用和在一起。它们是独立的API,它们创建的资源彼此不兼容。 虽然有一个。

  • 在熟悉的问题中,数组中的每个元素最多有k个位置距离其正确位置,无论是向左还是向右,最小堆实现如下。 创建一个大小为k 1的min-heap。因此,min堆的根是已排序数组的最小元素。对于剩余的n-(k 1)元素,在每次迭代中,选择是在[i]和已在堆中的元素之间。因此,在堆中插入[i],堆化并提取min。这将继续填充已排序数组的a[i-k]元素。 时间复杂度:O(k)O(n-k)。对数(k) 空间复

  • 问题内容: 我想创建一个使用PDO与MySQL交互的类。我可以使用PDO创建一个新的MySQL表吗? 问题答案: 是的你可以。 该部分是PDO构造函数的第一个参数,不必具有数据库名称。您可以简单地使用。然后,如果您具有适当的特权,则可以使用常规SQL命令创建数据库和用户等。 以下是install.php的示例,它以root用户身份登录,创建一个数据库,一个用户,并向用户授予对新创建的数据库的所有特

  • 问题内容: 我有一个要在多个页面上使用的数组,所以我将其设置为SESSION数组。我想添加一系列名称,然后在另一页上,我希望能够使用foreach循环来回显该数组中的所有名称。 这是会话: 我想像这样使用array_push向该数组添加一系列名称: 我收到此错误: array_push()[function.array-push]:第一个参数应该是一个数组 我可以使用array_push将多个值放