2016-06-12 20 views
-1

Ich habe eine while-Schleife unterhalb, die eine Abfrage ausführt und einige Werte in ein assoziatives Array zurückzieht, aber ich kann nicht scheinen, das Array mit array_sum() zu summieren.Summe eines Arrays in PHP

if ($availableBooks->num_rows > 0) { 
      while($row = $availableBooks->fetch_assoc()) { 
       $allBooks = $row["price"]; 
       $totalCost = array_sum($allBooks); 
       echo $totalCost; 
    } 

Wenn ich echo $ allBooks auf seine eigenen, I „121“ erhalten, die aus den drei Werten in der Datenbank gemacht wird ‚1‘, ‚2‘, ‚1‘, aber wie man sehen kann ich Ich versuche, sie zusammenzufassen, um eine Ausgabe von '4' zu erhalten.

Zur Zeit bekomme ich keine Ausgabe von oben.

Jede Hilfe wäre

+4

'$ Totalcost + = $ row [ "Preis"];' – jszobody

+0

Zuerst initialisieren '$ totalCost' als '0' außerhalb von' while' Schleife. Und dann innerhalb der while-Schleife, was @jszobody gesagt hat. –

+0

Hallo, danke für die schnelle Antwort @jszobody, ich habe versucht, was Sie vorgeschlagen, aber es gibt immer noch nicht eine Ausgabe, aber die unten Lösung der Verschiebung außerhalb der While-Schleife arbeitete –

Antwort

0
if ($availableBooks->num_rows > 0) { 
      $allBooks=array(); 
      while($row = $availableBooks->fetch_assoc()) { 
       $allBooks[] = $row["price"];  
    } 
    $totalCost = array_sum($allBooks); 
    echo $totalCost;} 

Die array_sum sollte die während loop.Try gehen außerhalb der Code a bove und lass es mich wissen.

--------- Bearbeiten ----- jszobody Lösung ist viel besser als versuchen, den Code zu beheben. Das ist, wenn Sie nicht die Preise der Bücher einzeln benötigen.

+0

Danke, hat ein Vergnügen gemacht! Können Sie erklären, warum die andere Lösung besser ist? –

+0

Das Erstellen eines '$ allBooks'-Arrays, nur um' array_sum' am Ende zu verwenden, scheint wirklich albern zu sein. – jszobody

+0

@AkashNayee erstellen ein Array für nur die Summe der Preise scheint dumm, wie es gesagt wird. Sie verbrauchen nur Speicher, den Sie speichern können.mehr über das Aufrufen der array_sum fügt mehr Arbeitsspeicher und Verarbeitung Stromverbrauch hinzu.Ich weiß, es ist ein bisschen zu viel für ein einfaches Skript, aber wenn Sie große Datenmengen schleifen und komplexere Skripte und Sie benötigen Bei jedem einzelnen Byte müssen Sie möglicherweise überdenken, wie Sie etwas tun. – Ossama

1

geschätzt werden Sie können den Preis auf ein Array hinzufügen und dann nach der while-Schleife verwenden array_sum()

if ($availableBooks->num_rows > 0) { 
    while($row = $availableBooks->fetch_assoc()) { 
     $allBooks[] = $row["price"]; 
    } 
    $totalCost = array_sum($allBooks); 
    echo $totalCost; 
} 
1

Wenn dies tatsächlich der Code, den Sie testen, als ich ein paar Dinge bemerken:

  1. Sie den Wert von $row['price'] direkt an die $allBooks Variablen zugewiesen wird. Die Tatsache, dass Sie array_sum() verwenden wollen, macht ich denke, dass vielleicht Ihre Absicht, alle Preise in dem $allBooks Variable als Array zu halten war, in dem Fall, dass Sie tun $allBooks[] = ...
  2. haben würden Sie scheinen die $totalCost für jedes Druckgeführt werden Iteration, wie es in der while Schleife basierend auf Einrückung zu sein scheint.
  3. Ihnen fehlt eine schließende geschweifte Klammer.

Wie wäre es?

if ($availableBooks->num_rows > 0) { 
    while ($row = $availableBooks->fetch_assoc()) { 
     $allBooks[] = $row["price"]; 
    } 
} 
$totalCost = array_sum($allBooks); 
echo $totalCost; 
Verwandte Themen