2011-06-06 184 views
0

我使用isset()檢查$this->statarr['stat1']['stat2'][$var1])。我只包括2個,但我還有更多。此屬性調用昂貴

if (isset($this->statarr['stat1']['stat2'][$var1])) { 
    $value .= 'var 1: ' . $this->statarr['stat1']['stat2'][$var1]; 
} 
if (isset($this->statarr['stat1']['stat2'][$var2])) { 
    $value .= 'var 2: ' . $this->statarr['stat1']['stat2'][$var2]; 
} 
... 

撥打$this->statarr屬性多次(10或更多)是否很昂貴?我應該撥打$this->statarr['stat1']['stat2']一次並將其存儲在$statarr中,然後進行其他檢查,或者在效率方面沒有任何區別?

$statarr = $this->statarr['stat1']['stat2']; 

if (isset($statarr[$var1])) { 
    $value .= 'var 1: ' . $statarr[$var1]; 
} 
if (isset($statarr[$var2])) { 
    $value .= 'var 2: ' . $statarr[$var2]; 
} 
... 

另一件事是我該如何確保$this->statarr['stat1']['stat2']自己設置?

+0

即使「如果」這不是更有效,這是更具可讀性? – 2011-06-06 02:18:27

+0

@Mitch,我知道它更具可讀性,但我想知道它是否更有效。如果不是,我不想說它更高效。 – switch 2011-06-06 02:25:40

回答

2

如果你擔心你的代碼的效率,可以使用分析工具喜歡的Xdebug,http://xdebug.org/

2

您可以使用的XDebug來檢查的性能配置它。總的來說,根據我的經驗,這些不是「大」交易破碎者。文件和數據庫操作往往要昂貴得多。

我個人正常化它有點像這樣(爲可讀性和可維護性):

function conditionaljoin($array,$keys) 
{ 
    $result = ""; 
    foreach ($keys as $key) 
     if (isset($array[$key]) 
     { 
      $result .= $array[$key] 
     } 
     return $result; 
} 

if (isset($this->['stat1']['stat2']) 
    $value = conditionaljoin($this->['stat1']['stat2'], array($var1, $var2); 
}