在PHP中的foreach循环中插入$key作为变量

在PHP中的foreach循环中插入$key作为变量,php,foreach,Php,Foreach,我有这个阵列: $lista_agregados = array('po' => '0', 'brita' => '0'); 这些阵列: $po = array(0 => array('qt' => 12, 'total' => 1234), 1 => array('qt' => 45, 'total' => 13224)); $brita = array(0 => array('qt' => 54,

我有这个阵列:

$lista_agregados = array('po' => '0', 'brita' => '0');  
这些阵列:

$po = array(0 => array('qt' => 12, 'total' => 1234),  
            1 => array('qt' => 45, 'total' => 13224));
$brita = array(0 => array('qt' => 54, 'total' => 124),  
            1 => array('qt' => 18, 'total' => 224));  
我想对
$lista_agregados
中的每个键使用循环而不是显式操作:

$somatorio_mensal['po'] = $po[0]['total'] + $po[1]['total'];
$somatorio_mensal['brita'] = $brita[0]['total'] + $brita[1]['total'];
这就是我到目前为止所做的:

foreach ($lista_agregados as $key => $value) {
    $somatorio_mensal["'$key'"] = $key[0]['total'] + $key[1]['total'];
}  
问题是
$key[0]
被解释为
po[0]
,而不是
$po[0]
。 有没有办法让这一切顺利进行?

试试这个:

foreach ($lista_agregados as $key => $value) {
    $somatorio_mensal[$key] = ${$key}[0]['total'] + ${$key}[1]['total'];
} 

请注意,您将
brita1
作为一个键,但该变量称为
brita
。有了这个固定值,您可以这样做:

foreach($lista_agregados as $key => $total) {
    foreach($$key as $k) {
        $lista_agregados[$key] += $k['total'];
    }
}
使用名为:

几件事:1)
“$key”
假设
$key=“test”
您的密钥将是
'test'
,您必须使用:
$arr[“'test'”]
访问它,请注意单引号!现在您可能只想使用
$key
,因此您可以使用
$arr[“test”]
2)访问元素来解决您的“问题”。您想查看手册中的变量,例如
$$key
,因此您基本上说将
$key
的值作为变量名,如果
$key=“po”do
$po
。3) 最后看一下
array\u column()
array\u sum()
,把所有的元素加起来。好的,也许可以给以下提示:
foreach ($lista_agregados as $sub => $unused) {
  // refer to variable called "$" + "$sub"
  if (!isset(${$sub}))
    continue;
  $a = ${$sub}; 

  if (! is_array($a))
    continue;

  $somatorio_mensal[$sub] = 0;
  foreach ($a as $k => $v)
    $somatorio_mensal[$sub] += $v['total'];
}