0

フォーム A から投稿されたデータを取得し、商品の価格を見つけて表示するコードがあります。次に、2 番目のフォームの本文にある次のデータをさらに処理する必要があります: アイテム名 アイテム数 アイテム価格

コードは次のとおりです。

<?php
echo "<div style='width:30%; height:auto; border: 2px solid;'>";
    echo "<h1>The Items Are...</h1><br>";
    //array that will hold the sum of each item cost
    $totalAmountArray = array();

    foreach ($_POST['basket'] as $name => $value) 
    {
        //indexer for totalAmountArray
        $i=0;
        if($value > 0){
                //echo $name . ": " . $value . "<br>";

            $itemPrice;
            //reassign 
            $itemName = $name;

            $itemQty = $value;
            //sql connection..
            mysql_connect();
            mysql_select_db("xxxxxx");
            $result = mysql_query("SELECT * FROM pricing WHERE item = '".$name."'");
            while($row = mysql_fetch_array($result)){
                $itemPrice = $row['price'];
                /*DEBUGGING*/
                echo "Item Name: <b>".$itemName . " </b>@ ";
                echo "<b>".$itemPrice ." </b>X ".$itemQty."<br>";
            }//end of while loop

            //multiply to get total for this item - store in temp
            $temp = $itemQty * $itemPrice;
            //store temp at index i in totalAmountArray
            array_push($totalAmountArray, $temp);
            unset($result);
            unset($itemPrice);
            unset($itemQty);
            unset($temp);
        }//end of if-statement
    }//end of foreach
    echo "<h1>Total Amount:<br></h1> ";
    //print_r($totalAmountArray);
    $sum;
    foreach($totalAmountArray as $perItemPrice){
        $sum += $perItemPrice;
    }
    echo "<b>SR. ".$sum."</b>";
echo "</div>";
?>

上記の foreach から返されたすべての詳細を多次元配列に格納して、次のようなものにすることを考えています。

[0] => itemName => itemQty => itemPrice <br>
[1] => itemName => itemQty => itemPrice <br>
[2] => itemName => itemQty => itemPrice <br>
[3] => itemName => itemQty => itemPrice <br>
.....

これが最善の方法でしょうか?どうすればそれを行うことができますか?私は実際には多次元配列に慣れていません(理論上のみ)。

たくさんのアドバイス、ご助言、ありがとうございました

4

2 に答える 2

1

配列の配列を保持します。多次元配列を作成すると、少し混乱することがあります。アイテムごとに、そのすべてのデータの配列を保持します。別の方法は、フォームからの各データを保持する「アイテム」などのオブジェクト (クラス) を作成することです。各フォーム送信オブジェクトは、並べ替えと取得のために配列に入れられます。

だからそうなるだろう

[sudo PHP]
class foo
{
     int formID
     string submitterName
     string bar
}

foo->formID = $row['id']

myArray[lastPosition + 1] = foo

for (int i = 0; i < foo.length; i++)
{
    echo foo[i]->formID 
}

私は何年も PHP に触れていませんでした。奇妙な半分 PHP のようなコードで申し訳ありません。

于 2012-04-15T07:35:50.357 に答える
1

私は間違っているかもしれませんが、アドバイスが必要なため、この状況で2次元配列を使用する理由がわかりません(ただし、質問を誤解したり間違ったりする可能性がありますが、問題を解決する最善の方法はそのクラスのクラス Item を作成するには、変数 itemName itemQty itemPrice を持ち、すべてのオブジェクト項目に関する情報を配列に格納します

于 2012-04-15T07:39:56.500 に答える