在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'];
}