2011-12-15 43 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; 

更快,更好取決於很多,這些條款是相當廣闊的。更快鍵入?自己決定。更快執行?我認爲在這樣的一般形式下這是不值得的,這可以在具體的地方產生影響,但是你需要在具體的地方進行衡量,以便找出答案。