未定义的偏移量:0 - Ajax 响应中的 PHP 错误 [重复]

Undefined offset: 0 - PHP Errors in Ajax Response [duplicate]

提问人:Giuls 提问时间:8/30/2018 最后编辑:RiggsFollyGiuls 更新时间:8/30/2018 访问量:933

问:

我确信这是一个简单的修复方法,但我似乎无法弄清楚。错误是Undefined offset: 0

我的代码确实有效,但在浏览器控制台中出现此错误。我尝试在这里查看此答案并声明变量,但是它仍然触发了错误。我是否遗漏了一些明显的东西?

我尝试通过添加和添加来声明,但他们似乎没有做出任何改变。$product_id= $_POST['id'] ?? '';$product_id = 0;

谁能帮我?

    function checking_items() {
    if( isset($_POST['id']) && $_POST['id'] > 0 ){
        // Initialising variables
        $counts     = array();
        $product_id = $_POST['id'];
        $categories = array('protein', 'pantry');

        // Loop through cart for product categories count
        foreach ( WC()->cart->get_cart() as $cart_item ) {
            if ( has_term( $categories[0], 'product_cat', $cart_item['product_id'] ) )
               $counts[0] += $cart_item['quantity'];
            if ( has_term( $categories[1], 'product_cat', $cart_item['product_id'] ) )
               $counts[1] += $cart_item['quantity'];
        }

        // Return the product category count that belongs to the added item
        if( has_term( $categories[0], 'product_cat', $product_id ) )
            echo json_encode(array(strtoupper($categories[0]) => $counts[0])); // Returned value to jQuery
        if( has_term( $categories[1], 'product_cat', $product_id ) )
            echo json_encode(array(strtoupper($categories[1]) => $counts[1])); // Returned value to jQuery
    }

    die(); // To avoid server error 500
}

enter image description here

php wordpress 未定义索引

评论

0赞 RiggsFolly 8/30/2018
嗨,像这样的错误通常带有一个行号,以告诉您错误发生的位置。您能确定哪一行产生错误吗,这对我们来说更容易。因此,我们不必编译您在脑海中显示的所有代码
0赞 Dave 8/30/2018
您确定错误来自吗?您有一个硬编码的引用。难道是来自那个吗?如果您使用完整的错误消息更新您的问题,它可能会有所帮助。$_POST['id']$counts[0]
0赞 Giuls 8/30/2018
我不是 100% 确定它来自.抱歉,我仍然在浏览器控制台周围找到我的离开。我已经更新了带有错误屏幕截图的问题。$_POST['id']
0赞 RiggsFolly 8/30/2018
您能告诉我们哪一行是第 14 行吗,因为您可能实际上没有包含此脚本中的所有行
0赞 Giuls 8/30/2018
14号线是$counts[0] += $cart_item['quantity'];

答:

1赞 MonkeyZeus 8/30/2018 #1

您需要正确启动:$counts

$counts = array(0,0);

因为您当前正在尝试增加一个不存在的位置:

// This doesn't work when position zero doesn't exist.
$counts[0] += $cart_item['quantity'];

同样的事情也适用于您的生产线。$counts[1] +=

评论

0赞 Giuls 8/30/2018
是否需要在 IF 语句之外启动?$counts = array(0,0);
0赞 MonkeyZeus 8/30/2018
在你尝试使用它之前,它只需要存在。你把它放在哪里就好了。
1赞 Giuls 8/30/2018
这奏效了!谢谢@MonkeyZeus。