我将变量的值设置为数组。
基于某些条件我必须初始化
array('a', 'b');
或
array('a', 'b', 'c');
那么最好的方法是什么?
我们应该写
$a = array('a', 'b');
if($b > 0) {
$a[] = 'c'?
}
或
if($b > 0) {
$a = array('a', 'b', 'c');
} else {
$a = array('a', 'b');
}
第一个看起来对我来说更好。
答案 0 :(得分:1)
首先,我们应该定义什么是“最佳”。对我来说最好的是:
与执行速度相比,两者几乎完全相同(我用1mil迭代进行了快速测试),所以没有明确的赢家。
这两个例子都很容易阅读,但是我会坚持使用第一个例子,因为如果由于某种原因你被要求在数组中添加“a1”,你将不得不改变一行代码,而不是2。
编辑:这是我运行的代码($ b = 0和$ b = 1不会改变太多: 编辑2:似乎我的第一个基准是错误的。这是第二个只做一次迭代的人。显然,第二个代码块执行得更快。$b = 1;
$t = microtime(true);
$a = array('a', 'b');
if($b > 0) {
$a[] = 'c';
}
printf("%f\n", microtime(true)-$t);
$t = microtime(true);
if($b > 0) {
$a = array('a', 'b', 'c');
} else {
$a = array('a', 'b');
$a[] = 'c';
}
printf("%f\n", microtime(true)-$t);
输出:
0.000017
0.000003
答案 1 :(得分:1)
IMO,第一个选择是最好的,因为它遵循DRY和分而治之的原则。
这是another benchmark,表明第一种方法平均只有13.5%的速度。