Php 带索引的数组"&引用;在数据库检索之后

Php 带索引的数组"&引用;在数据库检索之后,php,arrays,Php,Arrays,我正在练习PHP,试图学习细节。为此,我正在一家小网店工作。功能之一是登录后检索shoppingcart。这是可行的,但不知怎的,在数组顺序中出现了一个索引为“”的项。我不知道它是如何到达那里的,也不知道如何(如果我无法阻止这种情况发生)将其从阵列中删除。。。我试图把它弄乱,但没有效果。这是创建$\u会话['Bestellen']数组的代码: $query = "SELECT * FROM orders WHERE user_id = ".$_SESSION['user_id']

我正在练习PHP,试图学习细节。为此,我正在一家小网店工作。功能之一是登录后检索shoppingcart。这是可行的,但不知怎的,在数组顺序中出现了一个索引为“”的项。我不知道它是如何到达那里的,也不知道如何(如果我无法阻止这种情况发生)将其从阵列中删除。。。我试图把它弄乱,但没有效果。这是创建$\u会话['Bestellen']数组的代码:

        $query = "SELECT * FROM orders WHERE user_id = ".$_SESSION['user_id'];
        $result = mysqli_query($db, $query);
        while ($row = mysqli_fetch_assoc($result)){
            foreach($row as $key => $value){ 
                $order[$key] = $value;                  

                $_SESSION['Bestellen'][$order['product_id']]['aantal'] = $order['ammount'];
                $_SESSION['Bestellen'][$order['product_id']]['product_id'] = $order['product_id'];
            }                       

            $query = "SELECT product_name, price FROM products WHERE product_id = ".$order['product_id'];
            $result2 = mysqli_query($db, $query);
            while ($row2 = mysqli_fetch_assoc($result2)){
                foreach($row2 as $key2 => $value2){
                    $item[$key2] = $value2;

                    $_SESSION['Bestellen'][$order['product_id']]['product_name'] = $item['product_name'];
                    $_SESSION['Bestellen'][$order['product_id']]['price'] = $item['price'];

                }
            }
        }
我在数据库中对两个项进行了排序,但数组最终有第三个项(数组中的第一个),没有任何值,索引为“”:


它是如何到达那里的?如何防止这种情况发生?

看起来,
$order['product\u id']
缺失或为空。检查数据库,确保行
product\u id
存在且不为空

。。。。 可能只是它还不存在

在会话中尝试使用变量之前,循环遍历结果并设置$order数组

另外,请确保首先初始化$order数组,否则可能会收到未设置变量通知

$order = []; //somewhere above your loop

当然!这就解释了!我只需要把它从foreach循环中拉出来。这就成功了。非常感谢。
        foreach($row as $key => $value){ 
            $order[$key] = $value;                  
        }
        $_SESSION['Bestellen'][$order['product_id']]['aantal'] = $order['ammount'];
        $_SESSION['Bestellen'][$order['product_id']]['product_id'] = $order['product_id'];
$order = []; //somewhere above your loop