-1

这就是我们所拥有的,据我所知,这是一个复杂的数组:

<?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; 
}
?>

我编辑了我希望更有意义的代码。

我不知道这是否是一个对象/数组,我想将要用于每个 $element 的 $trek 的值总结为一个仅由先前元素值的总和而不是其本身确定的值。

一如既往,感谢您的回复:)

4

3 回答 3

1

$trek 是一个值,它不是一个数组,所以你不能使用 $trek[$key-1]。

将其更改为:$elements[$key-1]->velocity

于 2013-09-14T11:53:03.653 回答
0

我们对您的代码感到非常困惑,因为有一些未知的参数并且没有正确的数组声明。

既然你提到...

我想将要用于每个 $element 的 $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 和 2。因此第一个元素将被忽略,从而总结最后 2 个元素。

如果将此数组替换$elements=array(10,20,30);为,$elements=array('number1'=>10,'number2'=>20,'number3'=>30);则输出将为60。如您所见,所有值都分配了键。

于 2013-09-14T06:30:38.137 回答
-2

我认为您在这里的测试中不小心使用了 = :

if ( $key = 0 ) {

我想你的意思是:

if ( $key == 0 ) { 
于 2013-09-14T00:46:56.687 回答