2012-04-07 13 views
2

ich einige Informationen von MySQL-Datenbank zu holen und ich bin die Anzeige der folgenden Skript (Ich verwende Codeigniter)Sum up-Werte nach aus der Datenbank abrufen PHP

<?php if(count($records) > 0) { ?> 

    <?php $i = $this->uri->segment(3) + 0; foreach ($records as $row){ $i++; ?> 
<?php echo $row['amount']; ?> <br> 

<?php } ?> 

<?php } else { echo "No Record Found";} ?> 

Die I put erhalten, ist wie folgt

10,000 
20,000.34 
15,250.50 

Nun, was ich versuche, summieren sich alle Werte zu tun ist, die in $row['amount']; sind und den Wert der Summe in $sum_value gelegt, so dass, wenn ich $ sum_value echo bekomme ich den folgenden Wert

45,250.84 

Würden Sie mir bitte bitte zeigen, wie es geht.

Ich weiß, ich hätte die Summierungsdinge mit mysql tun können, aber ich möchte lernen, wie man so vorgeht.

Vielen Dank im Voraus :)

Antwort

6

iterativ Ihre Summe mit jeder Schleife durch die foreach hinzufügen:

$sum = 0; 
foreach ($records as $row) { 
    $sum += str_replace(",", "", $row['amount']); 
} 

echo number_format($sum, 2); 
+0

nicht funktionieren. Seine Zahlen sind Strings, die PHP als 10, 20 und 15 –

+0

@ d_inevitable guten Punkt betrachten wird. Das Entfernen der Kommas erlaubt den richtigen Cast. – Sampson

+0

@ Jonathan Sampson Danke Mann .. Sie sind Genie. :) –

1

Vielleicht so etwas wie dieses:

<? 
if(count($records) > 0) { 
    $i = $this->uri->segment(3) + 0; 
    $sum_value = 0; 
    foreach ($records as $row){ 

     $i++; // Don't know what you use $i for, get rid of it if unnecessary 

     // Add value to the sum 
     $sum_value += (float)str_replace(",", "", $row["amount"]); 

     // Print the current value 
     echo $row['amount'] + "<br/>"; 

    } 

    echo $sum_value; // Print the total sum after the loop 

} else { 
    echo "No Record Found"; 
} ?> 
1

Zuerst müssen Sie es konvertieren in richtige Zahlen:

$nums = array_map(function(&$row) { 
    return (float) str_replace(',', '',$row['amount']); 
}, $records); 

Dann können Sie array_sum verwenden:

echo number_format(array_sum($nums), 2); 
Verwandte Themen