php多维数组求和计算

时间:2014-02-07 14:03:42

标签: php

我有一个多维数组,每个数组有16个值,我想使用公式转换数组中的每个值 例如

$res_arr= array(
    0=>array(1,2,3,6,7,8,9,11,33,44,55,66,77,88,16,18),
    1=>array(17,52,38,666,79,8,9,15,33,44,55,66,76,88,16,18),
    2=>array(17,562,538,7666,579,688,9,15,933,44,55,660,76,808,106,108),
);

转换后我需要计算相应关键元素的总和 例如转换后,我得到一个像

这样的数组
$avArray=array(
    0=>array(.1,.2,.3,.4,.5,.6,.7....,.16),
    1=>array(.11,.21,.33,.44,.55,.66,.77....,.16),
    2=>array(.21,.21,.33,.43,.6,.67,.877....,.16)
)
i should be able to calculate 
.1+.11+.21,.2+.21+.21,.....

下面是我使用的代码,我得到空白值。

<?
$avArray = array();
foreach ($res_arr as $k=>$subArray)
    {

        $avArray[$k] += pow(10,round(($subArray-100.0/10),2))* 5/12;



    }
<table><tr>
for($i=0; $i<=16;$i++)
    {
        echo "<pre>";
        //print_r($num);
            echo "<td>". print_r($avArray) ."</td>";


    }
</tr></table>
?>

4 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西。将代码的一部分(在foreach之间)更改为:

foreach ($res_arr as $k=>$subArray)
    {
        $avArray[$k]=0;
        foreach($subArray as $value)
            $avArray[$k] += pow(10,round(($value-100.0/10),2))* 5/12;
    }

答案 1 :(得分:0)

我认为这就是你想要的:http://codepad.org/ivL5vVKf

$res_arr = 
array(
    0=>array(1,2,3,6,7,8,9,11,33,44,55,66,77,88,16,18),
    1=>array(17,52,38,666,79,8,9,15,33,44,55,66,76,88,16,18),
    2=>array(17,562,538,7666,579,688,9,15,933,44,55,660,76,808,106,108),
);

$avArray = array(
    array(),
    array(),
    array(),
);

foreach ($res_arr as $k=>$subArray)
{
    foreach($subArray as $val)
    {
        $avArray[$k][] = pow(10,round(($val-100.0/10),2))* 5/12;
    }
}

$results = array();

for( $i = 0; $i < count($avArray[0]); $i++ )
{
    $results[$i] = $avArray[0][$i] + $avArray[1][$i] + $avArray[2][$i];
}

print_r($results);

$results数组包含其他值的总和...例如$results[0]等于$avArray[0][0] + $avArray[1][0] + $avArray[2][0]

答案 2 :(得分:0)

以下是PHP's array_map()array_sum()相结合的替代版本。

$avArray = array();
foreach( $res_arr as $k => $v ) {
    $avArray[$k] = array_sum( array_map(function( $n ){ 
        return pow( 10, round(( $n - 100.0 / 10 ), 2 )) * 5/12;
    }, $v ));
}

/**
 * print_r( $avArray ); prints
**/
array
(
    [0] => 4.16666666671E+77
    [1] => INF
    [2] => INF
)

array_sum()汇总array()array_map()迭代计算后的每个值后应用的{{1}}。

答案 3 :(得分:0)

两个数组之和

$a=array(1,2,3); 
$b=array(2,3,4);
$c=array_($a+$b);
echo $c;

输出:

  

3 5 7