-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 に答える