使用显式字符串作为索引访问PHP数组

3

我知道使用''定界字符串比""定界字符串更高效...

但我想知道是否有任何性能改进可做。


$a = array( 'table' => 'myTable', 'order' => 'myOrder' );

$table = $a['table']

替代


$a = array( table => 'myTable', order => 'myOrder' );

$table = $a[table]

我猜是这样,但只是想知道你的意见...

(这段话与IT技术无关)

如果数组索引是字符串,不将其引用起来是非常、非常、非常糟糕的做法。 - Paolo Bergantino
-1 表示建议一种不仅糟糕而且很容易被认为是错误的做法。正如其他人所指出的,您所建议的是 PHP 的一个未记录的“特性”,这个特性在将来的语言更新中可能不会存在。 - Noah Goodrich
正如Norse所说,$table = $a['table']更快。 - gradbot
3个回答

8
是的。在你的第二个例子中,PHP处理器会在将其默认回到数组键之前检查“table”是否被定义为常量,因此它进行了比必要更多的检查,这也可能会造成问题。
考虑以下内容:
const table = 'text';

$a = array( table => 'myTable', order => 'myOrder' );

$table = $a[table]

现在PHP解释您的数组为$a[text],这不是您想要的。

5

您应该始终引用字符串。在第二个示例中,PHP确实将tableorder转换为字符串,但如果tableorder被定义为常量defined,PHP将使用常量的值而不是字符串'table'或'order'。


1
根据研究,"string"和'string'之间的差异几乎可以忽略不计。虽然并不是太重要,但使用'单引号'会更快一些。
echo "this is {$var1} and {$var2} and {$var3}";

比起

编程来说更容易。
echo 'this is ' . $var1 . ' and ' . $var2 . ' and ' . $var3;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接