我被卡住了,无法对不同类型的多维数组的和进行编码:下面是一个示例。
$multi_dimes_array = array(
"1"=>array
(1,2,5,6,7),
"2"=> "Apple",
"3"=> array("1"=>array('some_more',
'banana',
'ship',array(1,5,6,7,array(4,4,4,4))))
);
我的代码看起来像:
foreach ($multi_dimes_array as $val) {
if(is_array($val))
{
$total = $total + $val;
}
}
但我犯了一个错误。
您应该实现一个递归函数:
function deep_array_sum($arr) {
$ret = 0;
foreach($arr as $val) {
if (is_array($val))
$ret += deep_array_sum($val);
else if(is_numeric($val))
$ret += $val;
}
return $ret;
}
在我看来,你需要一个递归函数或大量的fors、if和whiles。它是递归的。
function array_sums($arraypart)
{
if(!is_array($arraypart))
{
return intval($arraypart);
}
else
{
$sub_sum = 0;
foreach($arraypart as $new_part)
{
$sub_sum += array_sums($new_part);
}
return $sub_sum;
}
}
也许是这样的东西?它是这样的:如果它不是数组,请尝试获取其整数(或浮点)值并返回。(我看到你也有一些字符串,如果不解析可能会很危险,实际上你打算如何添加字符串?)
如果它是一个数组,那么对于它的每个元素,再次调用函数,求和它们的返回值,然后自己返回它们。