我有这样的数据结构:
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)
我正在使用此循环来迭代数据结构并访问item中的值。
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()循环看起来有点过分,但我找不到更好的方法来完成。
感谢您的见解。
答案 0 :(得分: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了解更多文档。