Как исправить: Предупреждение: Недопустимый тип смещения в isset или пустой в F: \ xampp \ htdocs \ digikalamvc \ core \ model.php в строке 140 - PullRequest
0 голосов
/ 25 марта 2019

Как исправить эту ошибку:

Предупреждение. Недопустимый тип смещения в isset или пустой в F: \ xampp \ htdocs \ digikalamvc \ core \ model.php в строке 140

Неустранимая ошибка: необработанная ошибка: неподдерживаемые типы операндов в F: \ xampp \ htdocs \ digikalamvc \ models \ model_showcart4.php: 90 Трассировка стека: # 0 F: \ xampp \ htdocs \ digikalamvc \ controllers \ showcart4.php (31 ): model_showcart4-> saveOrder (Array) # 1 F: \ xampp \ htdocs \ digikalamvc \ core \ app.php (34): Showcart4-> saveorder () # 2 F: \ xampp \ htdocs \ digikalamvc \ index.php ( 7): App -> __ construct () # 3 {main}, брошенный в F: \ xampp \ htdocs \ digikalamvc \ models \ model_showcart4.php в строке 90

Код в model.php в строке 140: (if (isset($_SESSION[$name])) {)

public static function sessionGet($name) {
    if (isset($_SESSION[$name])) {
        return $_SESSION[$name];
    } else {
        return false;
    }
}

Код в model_showcart4.php в строке 90:

$priceTotal =$basketPrice-$basketDiscount+$postprice;

Код model_showcart4:

$basket = $basketInfo[0];
    $basket = serialize($basket);
    $basketPrice = $basketInfo[1];
    $basketDiscount = $basketInfo[2];

    $postprice = $this->calculatePostPrice($addressInfo['city']);
    $postType = self::sessionGet(['postType']);
    if ($postType == 1) {
        $postprice = $postprice['pishtaz'];
    } elseif ($postType == 2) {
        $postprice = $postprice['sefareshi'];
    }

    $priceTotal =$basketPrice-$basketDiscount+$postprice;

Код showcart4.php в строке 31:

function saveorder() {
    $this->model->saveOrder($_POST);
}

Ответы [ 2 ]

1 голос
/ 25 марта 2019

$postType = self::sessionGet(['postType']); как видите, аргумент - это массив. так вот isset($_SESSION[$name]) код становится недействительным, потому что ключ массива должен быть целым числом или строкой, а не массивом.

$postType = self::sessionGet('postType'); - это должно работать, я думаю

0 голосов
/ 25 марта 2019

Ваше предупреждение указывает на то, что данный ключ вашей функции не существует в массиве $ _SESSION. В model_showcart4.php в строке 83 вы передали массив своей функции, что, вероятно, является причиной этой ошибки.

Я бы рекомендовал добавить дополнительную проверку в ваше заявление if. Используйте функцию array_key_exists, чтобы проверить, действительно ли ключ существует в данном массиве, поэтому, если по какой-то причине задан ключ, который просто не существует, ваш код не сломается.

F: \ XAMPP \ HTDOCS \ digikalamvc \ ядро ​​\ model.php

public static function sessionGet($name) {
    if (array_key_exists($name, $_SESSION) && isset($_SESSION[$name])) {
        return $_SESSION[$name];
    } else {
        return false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...