php输出不显示第一项细节和错误

时间:2014-03-19 18:58:34

标签: php mysql sql database

enter image description here

很抱歉烦人。我有两个问题

  1. 为什么我会收到上述错误。

  2. 我正在向篮子中添加物品。 在一个会话中不能多次预订任何项目。购物车项目1和购物车项目4是相同的项目,但是当我将第一项添加到购物篮时。它没有显示应该是bookid的$ key $值:1但是你可以看到上面其他项目的信息。

  3. 如有任何问题请咨询,任何帮助将不胜感激。

    PHP& HTML

    <?php
    include 'header.php';
    
    $bookInBasket = "";
    
    if(isset($_POST['bid'])){
        $bid = $_POST['bid'];
        $wasFound = FALSE;
        $i = 0;
        if(!isset($_SESSION["basket_array"]) || count($_SESSION["basket_array"]) < 1) {
            $_SESSION["basket_array"] = array("bookid" => $bid);
        } else {
            foreach($_SESSION["basket_array"] as $each_item){
                $i++;
                while(list($key, $value) = each($each_item)){
                    if($key == "bookid" && $value == $bid){
                        $bookInBasket = "Sorry. You can only reserve one of each book at one time.";
                        $wasFound = true;
                    }
                }
            }
            if($wasFound==FALSE){
                array_push($_SESSION["basket_array"], array("bookid" => $bid));
            }
        }
    }
    
    if(isset($_GET['cmd']) && $_GET['cmd'] == "emptybasket"){
        unset($_SESSION["basket_array"]);
    }
    
    $cartOutput ="";
    
    if(!isset($_SESSION["basket_array"]) || count($_SESSION["basket_array"]) < 1){
        $cartOutput = "<h2 align='center'>You need to add Books to view them here.</h2>";
    } else {
        $i = 0;
        foreach($_SESSION["basket_array"] as $each_item){
            $i++;
            $cartOutput .= "<h2>Cart Item $i </h2>";
            while (list($key, $value) = each($each_item)) {
                $cartOutput .= "$key : $value <br />";
            }
        }
    }
    
    ?>
    
    <div id="azcontent"> 
                <h1>Basket</h1>
    
    <?php echo $cartOutput; ?>
    <br /><br />
    <a href="basket.php?cmd=emptybasket">Empty Basket</a>
    <div> <?php echo $bookInBasket ?> </div> 
    </div>
    </body>
    </html>
    

    会话输出(转储)

    array(4) { 
                     ["bookid"]=> string(1) "1" 
    
    [0]=> array(1) { ["bookid"]=> string(1) "2" } 
    
    [1]=> array(1) { ["bookid"]=> string(1) "3" } 
    
    [2]=> array(1) { ["bookid"]=> string(1) "1" } 
    
    }
    

1 个答案:

答案 0 :(得分:1)

初始化数组时使用array_push添加数组时会出现问题。每次使用array_push时,它都会添加一个索引数组的新元素。在这里初始化数组时:

if(!isset($_SESSION["basket_array"]) || count($_SESSION["basket_array"]) < 1) {
    $_SESSION["basket_array"] = array("bookid" => $bid);
} else {

它只是添加一个键值对,而不是一个带索引的数组。您可以通过将该行更改为:

来解决此问题
if(!isset($_SESSION["basket_array"]) || count($_SESSION["basket_array"]) < 1) {
    $_SESSION["basket_array"] = array( array("bookid" => $bid));
} else {

构建其余代码是为了处理索引数组的数组(主要是通过使用foreach语句),而不是更平坦的键值对数组。