这个属性是否昂贵

时间:2011-06-06 02:16:55

标签: php

我正在使用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];
}
...

多次(10次或更多次)调用$this->statarr属性是否很昂贵?我应该拨打$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']本身?

2 个答案:

答案 0 :(得分:2)

如果您担心代码的效率,可以使用Xdebug等分析工具对其进行分析,http://xdebug.org/

答案 1 :(得分: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);
 }