[英]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.