数组中的字符串偏移量'child_field'不合法

时间:2019-08-28 21:58:55

标签: php arrays woocommerce

首先,关于数组,我还是一个新手。为什么会出现错误Illegal string offset 'child_field'

这是我的代码。

$product_extras = $cart_item['product_extras'];

foreach ( $product_extras as $product_extra ) {
    if ( $product_extra['child_field'] == 1 ) {
            echo "YES";
    }
}

这是数组

Array
(
    [products] => Array
        (
            [pewc_parent_product] => 8928
            [parent_field_id] => pewc_5d66c506a5bb6
            [child_field] => 1
            [pewc_group_8929_9028_child_field] => pewc_group_8929_9028
            [products_quantities] => one-only
            [allow_none] => 0
        )

    [product_id] => 8945
    [title] => Section 200
    [groups] => Array
        (
        )

)
[28-Aug-2019 21:49:47 UTC] PHP Warning:  Illegal string offset 'child_field' in C:\laragon\www\xxxxx\wp-content\plugins\xxxxx\inc\class-woocommerce.php on line 129

2 个答案:

答案 0 :(得分:1)

您有一个嵌套数组。因此,在foreach循环中,它首先查看[products]元素(它是一个数组),是的,您有一个[child_field]元素。然后,它查看下一个元素[product_id],而您没有[child_field]子元素。因此就是错误。

要解决:

 if ( isset($product_extra['child_field']) && $product_extra['child_field'] == 1 )

答案 1 :(得分:0)

您应该删除foreach,并在以下情况下使用

if(1 == $product_extra["products"]['child_field']){
    echo "YES";
}