php
  • arrays
  • 2013-03-25 64 views 2 likes 
    2

    我有一個數據庫輸出循環。如何互相乘以未知數量的php數組值?

    我需要相乘值$total,結果賦給另一個變量和輸出它。我應該怎麼做?

    $quantity來自$_POST

    $items = implode(",",array_keys($_POST)); 
    
    mysql_query('SET NAMES utf8'); 
    $query = 'SELECT * FROM 
        items 
    WHERE 
        item_id IN (' . $items . ')'; 
    
    $result = mysql_query($query, $db) or die (mysql_error($db)); 
    
    echo ' 
    
    <table id="items"> 
    <tr class="head"> 
        <td>Name</td> 
        <td>Cost</td> 
        <td>Quantity</td> 
        <td>Subtotal</td> 
    </tr> 
    
    '; 
    $total = array(); 
    while ($row = mysql_fetch_assoc($result)) { 
    echo '<tr class="targetfields">'; 
    echo '<td>' . $row['item_name'] . '</td> 
    
    <td>' . $row['item_cost']; 
    //Getting item id 
    foreach ($_POST as $itemid=>$quantity) 
    { 
    //Displayin' quantity 
    if ($itemid == $row['item_id']){ 
        echo '</td><td><input name="' . $row['item_id'] . '" class="input-small" size="2" maxlength="2" type="text" value="'; 
        echo "{$quantity}"; 
        echo '" readonly></td> 
        <td>'; $sum = ($row['item_cost'] * $quantity); echo $sum; 
        echo '</td>'; 
    
        $total.= $sum; 
    
    } 
    
    
    } 
         echo '</tr>'; 
    } 
    
    ?> <tr> 
    <td class="sum" colspan="4"> Total: 
    <?php 
    
    
    
    ?> </td> 
    </tr> 
    </table> 
    
    +0

    你能告訴您的完整代碼'$ quantity'初始化 – 2013-03-25 07:34:23

    +0

    @Yogesh這是 – 2013-03-25 07:44:52

    +0

    所以你要的'$行乘法[「ITEM_COST」] * $數量'並將其計算存儲在每個迭代中的數組中? – 2013-03-25 07:48:49

    回答

    2
    1. $total .= $sum;這不會工作,將其更改爲:$total[] = $sum;
    2. 要獲得產品陣列$total使用的所有元素:後while循環array_product

    即:

    $items = implode(",",array_keys($_POST)); 
    
    mysql_query('SET NAMES utf8'); 
    $query = 'SELECT * FROM 
        items 
    WHERE 
        item_id IN (' . $items . ')'; 
    
    $result = mysql_query($query, $db) or die (mysql_error($db)); 
    $total = array(); 
    while ($row = mysql_fetch_assoc($result)) { 
    
    $sum = ($row['item_cost'] * $quantity); echo $sum;  
    $total[] = $sum; 
    
    } 
    
    echo array_product($total); 
    

    Ref:http://php.net/manual/en/function.array-product.php

    +0

    謝謝,這個作品! – 2013-03-25 07:47:52

    2

    我覺得應該是

    $sum = 1; 
    while ($row = mysql_fetch_assoc($result)) { 
        $sum = $row['item_cost'] * $sum; 
    } 
    echo $sum;  
    
    +0

    '$數量'呢? – 2013-03-25 07:25:42

    +0

    @PrasanthBendra不需要'數量'。因爲乘法將是從查詢中選擇的行。而'$ quantity'這個主要的東西從來沒有在這裏初始化,所以它會在這裏產生錯誤。 – 2013-03-25 07:29:11

    +0

    在每一行中$ sum都不會是$ row ['item_cost'] * 1,echo $ sum只會顯示最後一次計算? – bestprogrammerintheworld 2013-03-25 07:41:25

    相關問題