使用对最深层次的引用索引到嵌套数组VS?

时间:2011-12-15 16:46:20

标签: php arrays optimization nested reference

给出一个深层嵌套的数组:$array = array('nested' => array('so' => array('deep' => array())));

......哪个更快/'更好'?

$array['nested']['so']['deep'][0] = 'a';
$array['nested']['so']['deep'][1] = 'b';
$array['nested']['so']['deep'][2] = 'c';

$deep = &$array['nested']['so']['deep'];
$deep[0] = 'a';
$deep[1] = 'b';
$deep[2] = 'c';

或者它们是一样的吗?如果是这样,一个更好,为什么?

2 个答案:

答案 0 :(得分:3)

通常,

保持参考更快,更容易管理。但是,除非您多次访问它,否则它可能没有区别。哈希很快。在我最近跑的测试中,我发现散列比我之前想象的要快。通过引用绕过的级别越多,您将看到的改进越多。

然而,对我来说最重要的是它更容易维护。在大多数情况下,性能提升可能微不足道。我不打算为性能做这件事,但如果它让你的代码更具可读性,那么我就是为了它。

答案 1 :(得分:2)

您可能错过了另一种变体:

$deep[0] = 'a';
$deep[1] = 'b';
$deep[2] = 'c';
$array['nested']['so']['deep'] = $deep;

更快更好取决于很多,这些术语相当广泛。输入速度更快?自己决定。执行速度更快?我不认为以这样的一般形式知道它是值得的,这可以在具体的地方产生影响,但是你需要在具体的地方量化它以便找出它。