使用1个或更多项初始化数组的最佳方法

时间:2012-10-07 14:20:35

标签: php

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

基于某些条件我必须初始化

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

}

第一个看起来对我来说更好。

2 个答案:

答案 0 :(得分:1)

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

  1. 快速执行。
  2. 完成“正确”的方式。
  3. 易于阅读。
  4. 与执行速度相比,两者几乎完全相同(我用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%的速度。