2017-10-10 2 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 
    ) 

) 

J'ai cet exemple de tableau en PHP. Je veux résumer tous les 10 montants payés.nombre de php total de l'élément de tableau toutes les 10

Exemple est l'indice de somme 0-9, 10-19 et ainsi de suite

Ce que j'ai essayé est que pour la première 10 et je ne peux pas penser comment gérer pour chaque 10 avec un nombre dynamique

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

Que voulez-vous à faire avec les sous-totaux? –

+0

Je vais l'utiliser dans un système de réception, le reçu aura seulement 10 articles chacun, puis le prochain sera imprimé dans la page suivante, donc je dois additionner pour chaque page de la réception @TimBiegeleisen. La façon dont je le fais est que j'utilise '%' pour m'assurer que chacun aura seulement 10 mais je ne peux pas l'utiliser pour additionner les montants aussi le tableau que j'ai utilisé est le même qu'il a d'autres éléments comme le nom de l'article mais je n'ai pas inclus parce que ce sera long – Martin

+0

Voulez-vous dire, vous avez besoin d'un tableau ayant une valeur multiple et chacun est constitué d'une somme de 10 valeurs du tableau ci-dessus? par exemple. array ([0] => 20500, [1] => 8200) –

Répondre

1

solution courte avec range, array_slice et array_column fonctions:

// $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) - génère un tableau contenant une plage d'éléments. Ce serait comme [0, 10, 20]. Ces éléments sont limites pour chaque séquence de 10 taille

  • array_slice($arr, $k, 10) - chaque limite suivante $k est utilisée pour extraire la prochaine séquence de 10 taille/tranche du tableau initial $arr

+0

pouvez-vous décrire la façon dont vous avez fait avec pour chacun? c'est la première fois pour moi de voir que – Martin

+0

@Martin, ok, voir mon explication – RomanPerekhrest

+0

je regarde pendant que vous éditez c'est vraiment soigné – 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

Facile à comprendre, vous pouvez utiliser array_chunk(), array_sum(), array_column() comme ci-dessous: -

$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

essayer,

$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);