PHP多维数组或更好的选项?

时间:2012-04-15 07:20:03

标签: php arrays

我有一个代码从表单A中获取发布的数据,然后查找商品的价格并显示它们。现在我需要在第二种形式的主体中使用以下数据做更多事情: 项目名称 物品数量 商品价格

代码在这里:

<?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>
.....
这会是最好的方式吗?怎么做呢?在实践中我真的不熟悉多维数组(仅在理论上)。

非常感谢您的帮助和建议,

2 个答案:

答案 0 :(得分:1)

保持数组的数组。制作多维数组可能会有点混乱。对于每个项目,它包含所有数据的数组。另一种方法是创建一个对象(类),比如“items”,它保存表单中的每一段数据。然后将每个表单提交对象放入一个数组中进行排序和检索。

所以它会是

[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代码感到抱歉,我想我可能会快速提供答案!

答案 1 :(得分:1)

我可能错了但是因为你想要一个建议我只是没有看到为什么你会在这种情况下使用二维数组的重点(尽管我可能误解了你的问题并且可能有错但我认为最好的解决方法你的问题是在该类中创建一个类Item有一个变量itemName itemQty itemPrice然后将有关每个对象项的信息存储到一个数组中