这就是我们所拥有的,据我所知这是一个复杂的数组:
<?php
// the elements array var_dump($elements);
$elements = array(4) {
[0]=> object(stdClass) { ["id"]=> string(1) "1" ["velocity"]=> string(3) "500" } //this is element0
[1]=> object(stdClass) { ["id"]=> string(1) "2" ["velocity"]=> string(3) "600" } //this is element1
[2]=> object(stdClass) { ["id"]=> string(1) "3" ["velocity"]=> string(3) "700" } //this is element2
[3]=> object(stdClass) { ["id"]=> string(1) "4" ["velocity"]=> string(3) "800" } //this is element3
}
// the foreach
$sumAll=0;
foreach ($elements as $key=>$element) {
$trek = $element->velocity;
$someVarINeed = ( $key == 0 ) ? $external_value : $sumAll + $trek[$key-1]; // this is what I know it would work but it does not
// EXPECTED RESULTS
//because there is no previous
when $key=0 $someVarINeed = $external_value;
// this should be $someVarINeed = 0 + 500 = 500
when $key=1 $someVarINeed = $sumAll + $element0->velocity;
// this should be $someVarINeed = 0 + 500 + 600 = 1100
when $key=2 $someVarINeed = $sumAll + $element0->velocity + $element1->velocity;
// this should be $someVarINeed = 0 + 500 + 600 + 700 = 1800
when $key=3 $someVarINeed = $sumAll + $element0->velocity + $element1->velocity + $element2->velocity;
}
?>
我编辑了希望更有意义的代码。
我不知道这是一个对象/数组是什么,我想总结$ trek的值,用于每个$元素作为一个值,仅由前面元素值的总和而不是自身确定
一如既往,感谢您的回复:)
答案 0 :(得分:1)
$ trek是一个值,它不是数组,所以你不能使用$ trek [$ key-1]。
将其更改为:$ elements [$ key-1] - &gt; velocity
答案 1 :(得分:0)
我们对你的代码很困惑,因为有一些未知的参数并且没有正确的数组声明。
既然你提到过......
我想总结一下$ trek的值,用于每个$元素 值仅由前面元素值和的总和决定 不是它自己。
我希望这就是你要找的东西。
代码:
<?php
$elements=array(10,20,30); //An array with elements , keys not explicitly mentioned
$sumAll=0;
$someVarINeed=0;
$external_value=0;
foreach ($elements as $key=>$value) {
$trek = $value;
$someVarINeed += (( $key === 0 ) ? $external_value : $sumAll + $trek);
}
echo $someVarINeed;
?>
<强>输出:强>
50
因为我们检查$key === 0
,第一个数组元素的键为0,所以它将被分配$external_value
。以下连续元素不符合条件,因为键将1&amp;因此,第一个元素将被忽略,从而总结最后两个元素。
如果将此数组$elements=array(10,20,30);
替换为$elements=array('number1'=>10,'number2'=>20,'number3'=>30);
,则输出将 60 。如您所见,所有值都分配了密钥。
答案 2 :(得分:-2)
我认为你不小心在这里测试了一下:
if ( $key = 0 ) {
我认为你的意思是:
if ( $key == 0 ) {