2017-10-10 86 views
0
Array ( 
    [0] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [1] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [2] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [3] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [4] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [5] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [6] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [7] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [8] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [9] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [10] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [11] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [12] => Array ( 
     [amount_paid] => 2050.00 
    ) 
    [13] => Array ( 
     [amount_paid] => 2050.00 
    ) 

) 

我在php中有这个数组的例子。我想总结每10个支付金额。php count数组元素每10个

例子是总和指标0-9,10 - 19等

我试过只对前10,我想不出如何使用动态数字处理,每10

for ($i = 0; $i < count($json); $i++) { 
    if ($i < 10) { 
     $subtotalamount += floatval($json[$i]['amount_paid']); 
    } 
} 
+0

你想干什么提取接下来的10级序列/片如何处理小计? –

+0

我将在收据系统中使用它,收据将只有10个项目,然后下一个将打印在下一个页面中,因此我需要为收据@TimBiegeleisen的每页添加总和。我做的方式是我使用'%'来确保每个只有10个,但我不能用它来总和金额也是我使用的数组是相同的,它有其他元素,如项目的名称,但我没有包括因为它会很长 – Martin

+0

你的意思是,你需要有多个数组的数组,每个数组包含10个数组的总和? 例如array([0] => 20500,[1] => 8200) –

回答

1

简短的解决方案与rangearray_slicearray_column功能:

// $arr is your initial array 
$sub_totals = []; 
foreach(range(0, count($arr), 10) as $k){ 
    $sub_totals[] = array_sum(array_column(array_slice($arr, $k, 10), 'amount_paid')); 
} 

  • range(0, count($arr), 10) - 生成一个包含一系列元素的数组。这将是[0, 10, 20]。这些要素是每个10级序列

  • array_slice($arr, $k, 10)边界 - 每一个边界$k用于从最初的阵列$arr

+0

中所述,你能描述一下你为每个人做了什么吗?这是我第一次看到 – Martin

+0

@Martin,好的,看我的解释 – RomanPerekhrest

+0

我在看你编辑的时候真的很整洁 – Martin

0
$ret = array(); 
$subtotalamount = 0; 
for ($i = 0; $i < count($json); $i++) { 
    $subtotalamount += floatval($json[$i]['amount_paid']); 
    if ($i % 10 == 9) { 
     $ret[] = $subtotalamount; 
     $subtotalamount = 0; 
    } 
} 
if ($subtotalamount > 0) { 
    $ret[] = $subtotalamount; 
} 
2

容易理解,你可以使用array_chunk()array_sum()array_column()象下面这样: -

$new_array = array_chunk($array,10); 
$sub_total_array = []; 
foreach($new_array as $array){ 
    $sub_total_array[] = array_sum(array_column($array,'amount_paid')); 
} 
print_r($sub_total_array); 

https://eval.in/876914

0

试试这个,

$sumofall = array(); 
for ($i = 0; $i < count($json); $i++) { 
    if ($i % 10 == 0) {  
     $sumofeach = 0 
     for ($j=$i-10;$j<$i-1;$j++) { 
      $sumofeach += floatval($json[$i]['amount_paid']); 
     $sumofall[] = $sumofeach 
    } 
} 
0
$a = array (0 => array ('amount_paid' => 2050.00), 1 => array ('amount_paid' => 2050.00) , 2 => array ('amount_paid' => 2050.00) , 3 => array ('amount_paid' => 2050.00) , 4 => array ('amount_paid' => 2050.00) , 5 => array ('amount_paid' => 2050.00) , 6 => array ('amount_paid' => 2050.00) , 7 => array ('amount_paid' => 2050.00) , 8 => array ('amount_paid' => 2050.00) , 9 => array ('amount_paid' => 2050.00) , 10 => array ('amount_paid' => 2050.00) , 11 => array ('amount_paid' => 2050.00) , 12 => array ('amount_paid' => 2050.00) , 13 => array ('amount_paid' => 2050.00)) ; 

$b = array_column($a,'amount_paid'); 

$c = array_chunk($b,10); 

$sum = []; 
foreach($c as $arr){ 
    $sum[] = array_sum($arr); 
} 

echo "sum = "; 
print_r($sum);