1

我将变量的值设置为数组。

根据某些条件,我必须初始化

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');

}

第一个对我来说更好看。

4

2 回答 2

1

首先我们应该定义什么是“最好的”。对我来说最好的是:

  1. 执行速度很快。
  2. 以“正确”的方式完成。
  3. 易于阅读。

与执行速度相比,两者几乎相同(我做了一个 100 万次迭代的快速测试),所以这里没有明显的赢家。

这两个示例都很容易阅读,但是我会坚持使用第一个,因为如果由于某种原因要求您将“a1”添加到数组中,您将不得不更改一行代码,而不是两行。

编辑:这是我运行的代码($b = 0 和 $b = 1 并没有太大变化。: EDIT2:似乎我的第一个基准测试是错误的。这是第二个只做一次迭代的代码。显然第二个块代码执行得更快。

$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
于 2012-10-07T14:42:31.183 回答
1

IMO,第一个选项是最好的,因为它遵循 DRY 和分而治之的原则。

这是另一个基准,显示第一种方法平均仅慢 13.5%。

于 2012-10-07T15:21:41.487 回答