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

时间:2014-10-30 11:39:22

标签: php standards

我对PHP语法有疑问。

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

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

变量

public $varname = array();

public $varname = [];

方法

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

public function foo($bar = []){}

4 个答案:

答案 0 :(得分:56)

PSR-2(由PHP Framework Interoperability Group提出)未提及短数组语法。但正如您在chapter 4.3中所看到的,他们使用短数组语法将$arg3的默认值设置为空数组。

因此,对于PHP&gt; = 5.4,短数组语法似乎是事实上的标准。如果您希望脚本在PHP <5.4。

上运行,请仅使用array()

答案 1 :(得分:17)

来自PHP docs

  

从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()语法。

答案 2 :(得分:6)

这取决于您定位的PHP版本。为了获得最佳的向后兼容性,我建议您使用array()。如果您不关心旧版本(&lt; PHP 5.4),我建议您使用较短版本。

答案 3 :(得分:2)

我刚刚进行了一次测试,以查看[]相对于array()的表现如何

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%