2011-12-15 85 views
0

给定深度嵌套阵列:$array = array('nested' => array('so' => array('deep' => array())));索引到嵌套数组VS使用最深层次的引用?

...哪个更快/更好?

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

或者他们一样吗?如果是这样,是最好的,为什么?

+0

您需要对此进行配置文件(请参见[xdebug等](http://www.sitepoint.com/faster-php-apps-profile-your-code-with-xdebug/))。 – mario 2011-12-15 16:53:25

回答

3

通常,保持引用更快,更容易管理。但是,除非您多次访问它,否则它可能没有什么区别。散列速度很快。在最近运行的测试中,我发现散列速度比我之前设想的要快。尽管参考文献绕过的层次越多,您将看到的改进越多。

但是,对我而言最重要的是维护起来更容易。在大多数情况下,性能提升可能可以忽略不计。我不会为性能而烦恼,但如果它让你的代码更具可读性,那我就是为了它。

2

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

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

更快,更好取决于很多,这些条款是相当广阔的。更快键入?自己决定。更快执行?我认为在这样的一般形式下这是不值得的,这可以在具体的地方产生影响,但是你需要在具体的地方进行衡量,以便找出答案。