2016-06-12 13 views
-1

私はクエリを実行し、いくつかの値を連想配列に戻すwhileループを持っていますが、array_sum()を使用して配列を合計することはできません。PHPの配列の合計

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

は私が「1」、「2」、「1」私は、データベース内の三つの値で構成され、「121」を取得し、それ自身の上の$ allBooksをエコーし​​た場合しかし、あなたが見ることができるように私は」それらを合計して '4'の出力を得ようとしています。

現在、私は上記の結果を得ることはできません。

すべてのヘルプはあなたが配列に価格を追加することができ、その後、array_sum()

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

'$にtotalCost + = $行[ "価格"];' – jszobody

+0

まず、 'while'ループの '0'外と' $ totalCost'を初期化します。そして、 'while'ループの中で@jszobodyが言ったことをします。 –

+0

こんにちは、@jszobodyのおかげでありがとう、私はあなたが示唆したものを試しましたが、それでも私は出力を与えませんでしたが、whileループの外でそれを動かす以下の解決策は –

答えて

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

whileループを使用した後array_sumはしばらくloop.Tryインクルード外に行くべき

+0

ありがとうございました!他のソリューションが優れている理由を説明できますか? –

+0

最後に 'array_sum'を使うために' $ allBooks'配列を作成するのは本当にばかげているようです。 – jszobody

+0

@AkashNayeeだけで価格の合計のための配列を作成することはsillyasと言われているようです。あなたはあなたが保存できるメモリを使い切っているだけです。さらに、array_sumを呼び出すとメモリと処理の消費量が増えます。単純なスクリプトではあまりにも多すぎますが、大きなデータをループしてより複雑なスクリプトを作成し、 1バイトごとに、あなたがしていることを再考する必要があるかもしれません。 – Ossama

1

をいただければ幸いですコードを書いて、私に知らせてください。

---------編集----- jszobodyソリューションは、コードを修正しようとする方がはるかに優れています。 書籍の価格が個別に必要ない場合は、そうです。

1

これは確かに、私はいくつかのことを気づくことができるよりも、あなたは、テストしているコードの場合:

  1. あなたは$allBooks変数に直接$row['price']の値を代入しています。あなたがarray_sum()を使用したいという事実は、私はおそらくあなたの意図は、あなたがしなければならないと思われる場合には配列として$allBooks変数内のすべての価格を維持するためだったと思いますが$allBooks[] = ...
  2. あなたはそれぞれの$totalCostをプリントアウトしているようです反復は、インデントに基づいてループがwhileの範囲内にあるように見えます。
  3. 中かっこが1つもありません。

どのようにですか?

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