如何解决:警告:isset中的偏移量类型非法或在140:

时间:2019-03-25 08:25:51

标签: php session xampp offset

如何解决此错误:

  

警告:isset中的偏移量类型非法或在140行的F:\ xampp \ htdocs \ digikalamvc \ core \ model.php中为空

     

致命错误:未捕获错误: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}在第90行的F:\ xampp \ htdocs \ digikalamvc \ models \ model_showcart4.php中抛出

第140行上的model.php中的代码:(if (isset($_SESSION[$name])) {

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

第90行的model_showcart4.php中的代码:

$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;

第31行的代码showcart4.php:

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

2 个答案:

答案 0 :(得分:1)

$postType = self::sessionGet(['postType']); 如您所见,参数是一个数组。 所以在这里 isset($_SESSION[$name])代码变得无效,因为数组键应该是整数或字符串,而不是数组。

$postType = self::sessionGet('postType');-我猜这应该有用

答案 1 :(得分:0)

您的警告表明,提供给函数的键在$ _SESSION数组中不存在。在model_showcart4.php的第83行中,您向函数传递了一个数组,这可能是导致此错误的原因。

我建议在if语句中添加额外的检查。使用array_key_exists函数检查键是否确实存在于给定的数组中,因此如果由于某种原因给出的键根本不存在,则代码不会中断。

  

F:\ xampp \ htdocs \ digikalamvc \ core \ model.php

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