在某些其他语言(例如 AS3)中,由于对象创建和实例化的原因,已经注意到如果像这样 var foo = []
而不是 var foo = new Array()
那样初始化新数组会更快。我想知道PHP中是否有任何等价物?
class Foo {
private $arr = array(); // is there another / better way?
}
原文由 Tom Auger 发布,翻译遵循 CC BY-SA 4.0 许可协议
在某些其他语言(例如 AS3)中,由于对象创建和实例化的原因,已经注意到如果像这样 var foo = []
而不是 var foo = new Array()
那样初始化新数组会更快。我想知道PHP中是否有任何等价物?
class Foo {
private $arr = array(); // is there another / better way?
}
原文由 Tom Auger 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 PHP 5.4 之前:
$myArray = array();
PHP 5.4 及更高版本
$myArray = [];
原文由 Md. Shafiqur Rahman 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答1.5k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
2 回答877 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答935 阅读
1 回答915 阅读
1 回答845 阅读
在 ECMAScript 实现(例如,ActionScript 或 JavaScript)中,
Array()
是构造函数,而[]
是数组文字语法的一部分。两者都以完全不同的方式进行优化和执行,字面语法不受调用函数的开销的困扰。另一方面,PHP 具有可能看起来像函数但不被视为函数的语言结构。即使使用支持
[]
作为替代方案的 PHP 5.4,开销也没有区别,因为就编译器/解析器而言,它们完全是同义词。如果您需要支持旧版本的 PHP,请使用以前的语法。还有一个关于可读性的论点,但作为一名长期的 JS 开发人员,后者对我来说似乎很自然。当我第一次学习 PHP 时,我实际上犯了一个错误,即尝试使用
[]
初始化数组。由于核心开发人员的多数票反对,最初提出并拒绝了对语言的这种 更改,原因如下:
然而,在 5.4 之前似乎发生了改变,这可能是受支持流行数据库(如 MongoDB)(使用 ECMAScript 语法)的实现的影响。