i have some hmm ... i think some illogical logic which is i think by myself ... for now i can show you this :
$new ['period_10th'] = $periodic_items [9] ;
foreach ($new ['period_10th'] as $item) { $po_10th [] = $item -> po_id ; }
$new ['uni_10'] = array_unique($po_10th) ;
foreach ($new ['uni_10'] as $po_id) {
$po = $this -> model_prcsys -> get_po_by_id (md5($po_id)) ;
$pos_10 [] = $po ['po_id'] ;
$currency10 [] = $po ['currency'] ;
}
$cur_pos_10 = array_unique($currency10) ;
foreach ($cur_pos_10 as $currency) {
$new ['po_arr_10'] = $this -> model_prcsys -> get_pos_with_curr ($pos_10,$currency) ;
foreach ($new ['po_arr_10'] as $key) {
$test [] = $key -> total_line_price;
}
print_r($test);echo "<br><br>";
print_r(array_sum($test));echo "<br><br>";
}
that's will value
Array ( [0] => 20700000.00 [1] => 10340000.00 [2] => 4160000.00 [3] => 8150000.00 [4] => 9065000.00 [5] => 3500000.00 [6] => 2530000.00 [7] => 650000.00 [8] => 4395000.00 [9] => 17100000.00 [10] => 11250000.00 [11] => 6900000.00 [12] => 300000.00 [13] => 15750000.00 )
114790000
Array ( [0] => 20700000.00 [1] => 10340000.00 [2] => 4160000.00 [3] => 8150000.00 [4] => 9065000.00 [5] => 3500000.00 [6] => 2530000.00 [7] => 650000.00 [8] => 4395000.00 [9] => 17100000.00 [10] => 11250000.00 [11] => 6900000.00 [12] => 300000.00 [13] => 15750000.00 [14] => 1200000.00 )
115990000
I need to calculate the first array till end array (as many $cur_pos_10), but it always recalculate the entire array for the second value to the end. Please help me, and im really sorry for my bad english.
I need this : first result calculate array [0] to [13]; second result calculate array [14] only;
Hard to understand, unclear what code should do, but it looks like you just need to define variables for storing results before foreach
because $test []
will push value to an array $test
and variable $test
is defined inside foreach
and accumulate all the results over multiple loops. So try this:
$new ['period_10th'] = $periodic_items [9] ;
foreach ($new ['period_10th'] as $item) { $po_10th [] = $item -> po_id ; }
$new ['uni_10'] = array_unique($po_10th) ;
$pos_10 = []; // added
$currency10 = []; // added
foreach ($new ['uni_10'] as $po_id) {
$po = $this -> model_prcsys -> get_po_by_id (md5($po_id)) ;
$pos_10 [] = $po ['po_id'] ; // possibly similar problem if whole code is in loop or is executed multiple times
$currency10 [] = $po ['currency'] ; // possibly similar problem if whole code is in loop or is executed multiple times
}
$cur_pos_10 = array_unique($currency10) ;
foreach ($cur_pos_10 as $currency) {
/* in your code
in first iteration variable $test is undefined
in second iteration variable $test is defined and count($test) == 14
*/
$new ['po_arr_10'] = $this -> model_prcsys -> get_pos_with_curr ($pos_10,$currency) ;
$test = []; // added, variable $test is set to an empty array and erase previous results
foreach ($new ['po_arr_10'] as $key) {
$test [] = $key -> total_line_price; // problem was here
}
print_r($test);echo "<br><br>";
print_r(array_sum($test));echo "<br><br>";
}
A well indented and aligned code is important. I have indented and aligned your code. As @Kazz indicated the problem is that you are not resetting the $test variable. Some comments in the code will also be valuable.
<?php
$new['period_10th'] = $periodic_items[9] ;
foreach ($new['period_10th'] as $item) {
$po_10th[] = $item->po_id ;
}
$new['uni_10'] = array_unique($po_10th) ;
foreach ($new['uni_10'] as $po_id) {
$po = $this->model_prcsys->get_po_by_id (md5($po_id)) ;
$pos_10[] = $po ['po_id'] ;
$currency10[] = $po ['currency'] ;
}
$cur_pos_10 = array_unique($currency10) ;
foreach ($cur_pos_10 as $currency) {
$new['po_arr_10'] = $this->model_prcsys->get_pos_with_curr ($pos_10,$currency) ;
$test = array(); // this was missing and probably causing problems
foreach ($new['po_arr_10'] as $key) {
$test[] = $key->total_line_price;
}
print_r($test);
echo "<br><br>";
print_r(array_sum($test));
echo "<br><br>";
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.