Не работает array_key_exists, php

Есть метод, который должен добавлять продукт в корзину:

 public static function addProduct($id) { // $id – id товара

        $id = intval($id);

        $cartProducts = self::getCartList();

        if (empty($cartProducts)) {
            $cartProducts = [];
            $cartProducts[$id] = 1;
            $cartProductsJson = json_encode($cartProducts);
            self::saveInCart($cartProductsJson);
        } else {
            $cartProducts = (array)json_decode($cartProducts);
            if (array_key_exists($id, $cartProducts)) { ... }
        }

Метод getCartList():

public static function getCartList() {

        $userId = User::checkLogged();

        $db = Db::getConnection();

        $result = $db->prepare("SELECT `cart_products` FROM `user` WHERE `id`=:id");

        $result->bindParam(":id", $userId, PDO::PARAM_INT);

        $result->execute();

        $result->setFetchMode(PDO::FETCH_ASSOC);

        $row = $result->fetch();

        return $row['cart_products'];

    }

Метод saveInCart():

public static function saveInCart($json) {

        $userId = User::checkLogged();

        $db = Db::getConnection();

        $result = $db->prepare("UPDATE `user` SET `cart_products`=:json WHERE `id`=:id");

        $result->bindParam(":json", $json, PDO::PARAM_STR);
        $result->bindParam(":id", $userId, PDO::PARAM_INT);

        $result->execute();

    }

Скриншот с базы Скриншот с базы

Проблема: авторизировался за пользователя DenisMyshak, у которого есть один товар в корзине(json-формат: продукт с id = 236 и количеством = 1). После этого в переменную $cartProducts записывается массив в json. Дальше срабатывает ветка else условного оператора в методе addProduct(). И после мне нужно определить: есть ли ключи этого массива, которые совпадают с $id. Но почему то даже если $id = 236 и в массиве есть этот ключ – возвращает false. Буду очень благодарен за ответ!


Ответы (0 шт):