PHP 数组 vs []方法和变量声明

我有一个关于 PHP 语法的问题。

在定义函数和变量时,我应该使用哪种约定?

我知道他们在实践中做同样的事情,但我想知道哪种方法符合最佳实践标准。

变量

public $varname = array();

或者

public $varname = [];

方法

public function foo($bar = array()){}

或者

public function foo($bar = []){}
34473 次浏览

来自 PHP 医生:

在 PHP 5.4中,还可以使用短数组语法,用[]替换 array ()。

<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);


// as of PHP 5.4
$array = [
"foo" => "bar",
"bar" => "foo",
];
?>

如果在5.4以前的版本中尝试使用“[]”表示法,它将失败,PHP 将抛出 syntax error

为了实现向后兼容性,应该使用 array()语法。

这取决于您的目标是哪个版本的 PHP。为了获得最佳向下兼容,我建议您使用 array ()。如果您不关心旧版本(< PHP 5.4) ,我建议您使用较短的版本。

PSR-2 PSR-12(by PHP 框架互操作性小组)没有提到短数组语法。但是正如您在 第4.3章中看到的,它们使用短数组语法将 $arg3的默认值设置为空数组。

因此,对于 PHP > = 5.4,短数组语法似乎是事实上的标准。如果希望脚本在 PHP < 5.4上运行,则仅使用 array()

刚刚做了一个测试,看看[]如何执行 vsarray () ,这是我得到的结果

testing 1 million []s ( with $arr[] = [] )
started at : 1561298821.8754
ended at: 1561298822.6881
difference: 0.81266021728516 seconds


testing 1 million array()s ( with array_push( $arr, array()) )
started at : 1561298822.6881
ended at: 1561298823.843
difference: 1.1549289226532 seconds


testing 1 million []s ( again while the processor is hotter)
started at : 1561298823.8431
ended at: 1561298824.7448
difference: 0.9017219543457 seconds

所以表现得快了20%

很明显,新的 PHP 项目应该使用[] ,因为它更短、更干净,与其他语言(如 JS)相似。