我对PHP语法有疑问。
在定义函数和变量时,我应该使用哪种约定?
我知道他们在实践中做了同样的事情,但我想知道哪种方法符合最佳实践标准。
变量
public $varname = array();
或
public $varname = [];
方法
public function foo($bar = array()){}
或
public function foo($bar = []){}
答案 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%