array_key_exists() 期望参数 2 为数组,给定 null - Cakephp 3

我遇到了 array_key_exists 问题。我需要检查购物车中是否已存在产品。我这样做:


.

$session = $this->request->getSession();

            $cart = $session->read( 'cart' );

            

            if (array_key_exists($order->product_id, (array) $cart)) {

                $this->Flash->error('Invalid request');


            } else {

                $cart[] = $order;

                $session->write('cart', $cart );

                $this->Flash->success($order->product->name_product . ' has been added to the shopping cart');

                return $this->redirect( ['action' => 'index'] );


            }

            return $this->redirect($this->referer());

        } else {

            return $this->redirect(['action' => 'index']);

        }

.

.

我收到以下错误,但现在更新后它不再存在。但该功能仍然对我没有帮助。


array_key_exists() expects parameter 2 to be array, int given

即使产品已添加,也会将其添加到购物车。我需要将所选产品 ID 与购物车中已有的产品 ID 进行比较。订单信息基本上是:id、数量、user_id、product_id。


如果有人可以分析某种方法来检查已安装数组中的 id,我将不胜感激。


呼啦一阵风
浏览 195回答 1
1回答

达令说

当你这样做时:$cart[] = $order;您要求 PHP 将一个新元素添加到数组末尾$cart,并为其提供下一个可用的数字键。然后,您尝试查看产品 ID 是否作为数组中的键存在。除非您的产品 ID 类似于 0 和 1,否则这种情况不太可能发生。如果您希望购物车通过产品 ID 进行键入,请使用$cart[$order->product_id] = $order;
打开App,查看更多内容
随时随地看视频慕课网APP