我有一个多维数组,每个数组有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>
?>
答案 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