使用php从多维数组中检索数据

时间:2012-07-05 05:26:15

标签: php session multidimensional-array

我有一个二维数组,我想检索其值以分离变量。 我正在使用这些代码,但它给我一个错误说

警告:mysql_fetch_assoc()期望参数1是资源,

中给出的数组

这是我用来为多维会话分配值的代码。

if(isset($_POST['adnother'])) {
  $date = $_POST['date'];
  $billnmbr = $_POST['billnmbr'];
  $itemcode = $_POST['itemcode'];
  $itemname = $_POST['itemname'];
  $exdate = $_POST['exdate'];   
  $eachprice = $_POST['eachprice']; 
  $itmtotal = $_POST['itmtotal'];
  $wasFound=false;
  $i=0; 
 //if the bill session variable is not set or cart array is empty
    if(!isset($_SESSION["bill_array"]) || count($_SESSION["bill_array"]) < 1 ) {
        // Run if the bill is empty or not set
        $_SESSION["bill_array"]= array(1 => array("date"=> $date, "billnmbr"=> $billnmbr, "itemcode"=> $itemcode, "itemname"=> $itemname, "exdate"=> $exdate, "eachprice"=> $eachprice, "itmtotal"=> $itmtotal));
    } else {
        // Run if the bill has at least one item in it
        foreach($_SESSION["bill_array"] as $each_item) {
            $i++;
            while(list($key,$value)=each($each_item)){
                if($key=="itemcode" && $value == $itemcode){
                    // That item is in cart already so push a error message in to screen
                    $wasFound = true;
                    ?>
                    <script type="text/javascript">
                    var error = "<?= $wasFound ?>";
                    if(error == "true") {
                        alert("You trying to add same item twice")
                    }
                    </script>
                    <?php 
                    }//close if condition
            }//close while loop
        }//close foreach loop
if($wasFound==false){
    array_push($_SESSION["bill_array"],array("date"=> $date, "billnmbr"=> $billnmbr, "itemcode"=> $itemcode, "itemname"=> $itemname, "exdate"=> $exdate, "eachprice"=> $eachprice, "itmtotal"=> $itmtotal));
}
    }

在分配后我试图用这些代码检索这些日期

<?php 
$cartOutput="";
if(!isset($_SESSION["bill_array"]) || count($_SESSION["bill_array"]) < 1 ) {
    $cartOutput = "<h2 align='center'> Bill is still empty </hd>";
}
else {
    $i = 0;
    foreach ($_SESSION["bill_array"]as $each_item ) {
        $i++;
    echo    $cartOutput = "<h2> Bill item $i </h2>";
        while($row=mysql_fetch_assoc($each_item)){
        $date1=$row["date"];
        $billnmbr1=$row["billnmbr"];
        $itemcode1=$row["itemcode"];
        $itemname1=$row["itemname"];
        $exdate1=$row["exdate"];
        $eachprice1=$row["eachprice"];
        $itmtotal1=$row["itmtotal"];
        }
    }
     echo $date1;
     echo $billnmbr1;
     echo $itemcode1;
     echo $itemname1;
     echo $exdate1;
     echo $eachprice1;
     echo $itmtotal1;
    }



?>  

我无法弄清楚错误的位置。请有人帮帮我吗

2 个答案:

答案 0 :(得分:1)

您正在尝试将数组循环,就像它是数据库结果集一样。你实际上不需要循环,你可以直接通过键访问值。

例如,试试这个:

echo $each_item['date'];

答案 1 :(得分:0)

使用这种方式:

$result = array();
foreach($_SESSION["bill_array"] as $row){
    $result[] = $row;
}
echo '<pre>';
print_r($result);
echo '</pre>';

这样你就可以在数组中得到结果。 实际上使用。

访问这些变量
  

$ result [0],$ result [1]等