【发布时间】:2012-08-27 15:45:03
【问题描述】:
$total_materials_cost = 0;
array_walk_recursive($materials, function($item, $key) {
if (in_array($key, array('id'))) {
(....)
$total = $material_price * $material['amount'];
$total_materials_cost += $total;
}
}
}
});
echo $total_materials_cost;
对于上面的代码,我在 $total_materials_cost += $total; 行出现错误,说变量未定义 - 我相信这是因为我在函数内部?但是我怎么能以任何方式绕过/解决这个问题,所以它确实会添加到变量中?
【问题讨论】:
-
我发现您不太可能需要递归方法。如果根本需要任何特殊的迭代,则更有可能只需要嵌套循环。如果子数组具有一致的深度,则使用递归是不必要的开销,
array_walk_recursive()将不必要地访问每个叶节点。这个老问题真的会从样本输入中受益。此外,in_array()是另一个不必要的开销。
标签: php