Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 偏移量非法,无法使用[]读取错误_Php - Fatal编程技术网

Php 偏移量非法,无法使用[]读取错误

Php 偏移量非法,无法使用[]读取错误,php,Php,我用以下代码在PHP5的核心级别实现了一个Ajax购物车: $resp = $cart->getDetails(filter_var($_POST["pid"], FILTER_SANITIZE_NUMBER_INT)); if($resp == "" OR $resp == null) { echo "Some Error!"; } elseif($resp != "" || $resp != null) { while($row = $resp->fetch_

我用以下代码在PHP5的核心级别实现了一个Ajax购物车:

$resp = $cart->getDetails(filter_var($_POST["pid"], FILTER_SANITIZE_NUMBER_INT));

if($resp == "" OR $resp == null)
{
    echo "Some Error!";
}

elseif($resp != "" || $resp != null)
{
    while($row = $resp->fetch_assoc())
    {
        $itemArray[] = array(
            $resp => array(
                'name' => $row["product_name"],
                'id' => $row["id"],
                'discount' => $row["discount"],
                'quantity' => 1,
                'price' => $row["price"]
            )
        );
    }

    print_r($itemArray);

    if(!empty($_SESSION["cart_item"]))
    {
        if(in_array($itemArray[], $_SESSION["cart_item"]))
        {
            foreach($_SESSION["cart_item"] as $k => $v)
            {
                if($itemArray[] == $k)
                    $_SESSION["cart_item"][$k]["quantity"] = $_POST["quantity"];
            }
        }
        else
        {
            $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
        }
    }
    else
    {
        $_SESSION["cart_item"] = $itemArray;
    }
}
由于我使用num_rows>0检查了$resp中的值,因此我正确地获取了$resp中的值,但出现了一个错误,无法使用[]进行读取,并且使用了非法的偏移量


我对这件事还不熟悉,我也尝试过修改所有代码。我哪里出错了?

我不知道你的意思,但你在这行有个错误:

if(in_array($itemArray[], $_SESSION["cart_item"])) …
第一个参数$itemArray[]导致了问题

符号$itemArray[]是一种特殊的PHP缩写,用于将元素推送到数组中。您可以这样使用它:

$itemArray[]='new value';

但是,只能在赋值表达式的左侧使用它。正如您所看到的,如果您试图阅读它,它会产生一个错误,这没有任何意义。

我不太理解您想要什么,但我把这个放在了答案上,因为它太大了,无法放在注释上:

 $resp = $cart->getDetails(filter_var($_POST["pid"], FILTER_SANITIZE_NUMBER_INT));

    if($resp == "" OR $resp == null)
    {
        echo "Some Error!";
    }

    elseif($resp != "" || $resp != null)
    {
        while($row = $resp->fetch_assoc())
        {
            $itemArray = array(
             array(
                'name' => $row["product_name"],
                'id' => $row["id"],
                'discount' => $row["discount"],
                'quantity' => 1,
                'price' => $row["price"]
            )
            );
        }

    print_r($itemArray);

    if(!empty($_SESSION["cart_item"]))
    {
        if(in_array($itemArray, $_SESSION["cart_item"]))
        {
            foreach($_SESSION["cart_item"] as $k => $v)
            {
                if(in_array($k, $itemArray))
                    $_SESSION["cart_item"][$k]["quantity"] = $_POST["quantity"];
            }
        }
        else
        {
            $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
        }
    }
    else
    {
        $_SESSION["cart_item"] = $itemArray;
    }
    }

你能告诉我你在哪一行代码中得到了这个错误吗?我在第29行得到了非法的偏移类型错误,我刚刚解决了[]读取错误哪一个是第29行?在_数组$itemArray[]中,$_会话[cart_item]是错误的部分,$itemArray[]不能像这样在这里使用。我看不出其中的逻辑!in_array只需要一个数组和一个字符串进行测试。当$row=$resp->fetch_assoc{$itemArray[]=array$resp=>array'name'=>$row[product_name],'id'=>$row[id],'DEPRISH'=>$row时,此事件中会生成错误[折扣],'quantity'=>1,'price'=>$row[价格];}while循环thingi正在搜索用户正在添加的产品是否已存在于数组中,如果已存在,则产品数量将增加+1@AkshayShrivastav这没有任何区别。您只能使用$itemArray[]在作业中。它相当于array_push$itemArray,“new value”。您不能在应该阅读某个内容的上下文中使用它,我看到您已经阅读了不止一次。请您帮助编辑代码,我正在尝试实现这一点。我正在尝试实现的是,当用户添加产品以推送ajax调用wil时我将他们的请求发送到带有产品id的服务器,然后我将提取与该产品id相关的所有数据,然后我将接收到的数据作为响应,我想将其存储在一个数组中,比如PHP中的JSON数组,然后我想检查S_会话['cart']emprty是否为空如果为空,则推送数组中的值,否则在一个数组中创建多个具有不同产品值的数组正如我所说的,我不确定您的意思,但您可以尝试删除[]总之。我看不出你有一个名为$itemArray的现有数组,所以我看不出你真的在使用它。我看到你使用过它的3个实例。如果你将这三个都删除,它可能会修复它。这对我来说非常有效@Nerea这就是我想要的,非常感谢:我还有一个问题要问不,我可以看到我想要的结果n数组{0是这样的,在元素内部,如果我生成了一个以上的数组,那么这将是数组{1如何将该数组附加到前一个数组?要合并两个数组,可以使用$final_Array=Array_merge$array1,$array2;