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


PHP array vs [ ] in method and variable declaration

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

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

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

变量

public $varname = array();

public $varname = [];

方法

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

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

PSR-2 和 PSR-12(PHP Framework Interoperability Group(没有提到短数组语法。但正如您在第 4.3 章中看到的,他们使用短数组语法将默认值 $arg3 设置为空数组。

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

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

刚刚做了一个测试,看看 [] 如何执行 vs 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%

这取决于您针对的 PHP 版本。为了获得最佳的向后兼容性,我建议您使用 array((。如果你不关心旧版本(

很明显

,新的PHP项目应该使用[],因为它更短,更干净,并且类似于JS等其他语言。