簡體   English   中英

PHP從現有數組創建新數組,並對新數組進行一些數學計算[多維]

[英]PHP Create new array from existing array with some maths calculation on new array [multidimensional]

我有一個多維數組,如下所示:

$arrayOne = array(
    0 => array(
        "no"=> "1",
        "value"=>100
    ), 
    1=> array(
        "no"=> "2",
        "value"=>"20"
    )
    2=> array(
        "no"=> "3",
        "value"=>"30"
    )
);

我想創建一個新的數組,其中:

1st new array value = 100+50 (equal to 150, where 50 is an amount that I want to add to the array).
2nd new array value = 20+150 (equal to 170, where 150 is the total of 1st new array)
3rd new array value = 30+170 (equal to 200, where 170 is the total of 2nd new array)

這可行嗎? 輸出應為:

   $newArrayOne = array(
        0 => array(
            "no"=> "1",
            "value"=>150
        ), 
        1=> array(
            "no"=> "2",
            "value"=>"170"
        )
        2=> array(
            "no"=> "3",
            "value"=>"200"
        )
    );

這個要求對我來說有點太復雜了。 誰能分享我這個概念,我會盡力弄清楚。

非常感謝。

像這樣:

$arrayOne[0]['value'] += 50;
for($i=1; $i<count($arrayOne); $i++) {
    $arrayOne[$i]['value'] += $arrayOne[$i-1]['value'];
}

您可以使用經典的 foreach循環

$arrayOne = //Your array here...

$newArrayOne  = array();
$toAdd = 50;

foreach( $arrayOne as $key => $val ) {
    $newArrayOne[$key] = $val;  //Assign the value to $newArrayOne

    if ( $key === 0 ) $newArrayOne[$key]['value'] += $toAdd;  //Modify the value: If $key is 0, add 50
    else $newArrayOne[$key]['value'] += $newArrayOne[ $key - 1 ]['value'];  //If $key is not 0, add the value of last entry of $newArrayOne
}

這將導致:

Array
(
    [0] => Array
        (
            [no] => 1
            [value] => 150
        )

    [1] => Array
        (
            [no] => 2
            [value] => 170
        )

    [2] => Array
        (
            [no] => 3
            [value] => 200
        )

)
$first_array = array(
0 => array(
    "no"=> "1",
    "value"=>100
), 
1=> array(
    "no"=> "2",
    "value"=>"20"
),
2=> array(
    "no"=> "3",
    "value"=>"30"
)
);

$to_be_added = 50; //this is what you want to add to your first value

foreach ($first_array as $key => $val){

  $to_be_added = (int)$val['value'] + $to_be_added ; //type casting
  $newArrayOne[$key]['no']= $val['no'];
  $newArrayOne[$key]['value']= $to_be_added; 


}

print_r($newArrayOne);

請注意im類型將您的值轉換為整數,因為並非所有“值”都是整數。

您的輸出

Array ( [0] => Array ( [no] => 1 [value] => 150 ) [1] => Array ( [no] => 2 [value] => 170 ) [2] => Array ( [no] => 3 [value] => 200 ) )

$ newArray = $ arrayOne;

foreach($ arrayOne as $ k => $ v){

$newArray[$k]['value'] = ($k == 0) ? array_sum(array_column($arrayOne, 'value')) : $newArray[$k-1]['value'] + $arrayOne[$k]['value'];

}

print_r($ newArray);

我為你付出了一點努力。 希望這對您有用。

<?php
echo "<pre>";
$arrayOne = array(
    0 => array(
        "no"=> "1",
        "value"=>100
    ), 
    1=> array(
        "no"=> "2",
        "value"=>"20"
    ),
    2=> array(
        "no"=> "3",
        "value"=>"30"
    )
);
$valnewarr = array();
$valdata = 50;
$i = 0;
foreach($arrayOne as $val){
$valdata = $val['value']+$valdata;
$valnewarr['no'] = ++$i;
$valnewarr['value']  = $valdata;
$newArrayOne[] = $valnewarr;
}
print_r($newArrayOne);
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM