1

我有一个这样的数据结构:

    array (size=4)  
  'active' => 
    array (size=1)
     170 => 
    object(stdClass)[2847]
      public 'item' => string '170' (length=3)
  'complete' => 
    array (size=1)
     8 => 
      object(stdClass)[2849]
       public 'item' => string '8' (length=1)
  'dropped' => 
    array (size=1)
     10 => 
     object(stdClass)[2850]
       public 'item' => string '10' (length=2)
  'total' => 
    array (size=1)
     188 => 
     object(stdClass)[2851]
       public 'item' => string '188' (length=3)

我正在使用这个循环来迭代数据结构并访问项目中的值。

        foreach($ecounts as $key => $value){

        if($key == 'total'){
            foreach($value as $i){
                $te = $i->item; 
            }
        }elseif($key == 'active'){
            foreach($value as $i){
                $ae = $i->item; 
            }
        }elseif($key == 'dropped'){
            foreach($value as $i){
                $de = $i->item; 
            }
        }elseif($key == 'complete'){
            foreach($value as $i){
                $ce = $i->item; 
            }
        }
    }

我确信有一种更智能的方法可以访问项目值。每个 if 语句中的额外 foreach() 循环似乎有点过头了,但我找不到更好的方法来完成。

感谢您的见解。

4

1 回答 1

1

也许您可以在开始其他循环之前决定变量的名称。

喜欢

    foreach($ecounts as $key => $value){

        $var = ($key == 'total' ? 'te' : $key == 'active' : 'ae' ? $key ==  'dropped' : 'de' ? $key == 'complete' : 'ce');

        foreach($value as $i){
            ${$var} = $i->item; 
        }
}

阅读http://php.net/manual/en/language.variables.variable.php以获取更多文档。

于 2013-09-12T14:58:02.080 回答