【问题标题】:Getting Undefined index when trying to loop through an associative array尝试遍历关联数组时获取未定义的索引
【发布时间】:2017-04-14 14:27:45
【问题描述】:

我正在尝试遍历关联数组,但出现未定义索引错误。

下面是数组。

{
    "first":{
        "name":"name 1",
        "products":[
            {
                "id":2,
                "product_id":123,
                "category_id":1
            },
            {
                "id":3,
                 "product_id":"456"
            }
        ]
    }
}

我正在尝试像这样循环

foreach ($array as $category => $products) {
    echo $category;
    foreach ($products['products'] as $product) {
        echo $product->id;
    }
}

但我得到了一个

Undefined index: products

如何循环遍历 products 数组?

【问题讨论】:

  • 在循环之前使用$array = json_decode($array, TRUE);
  • $array的定义是什么?

标签: php arrays laravel foreach


【解决方案1】:

您需要将$products['products'] 更改为$products->products,因为 $productsobject 而不是 array

$test='{"first":{"name":"name 1","products":[
{"id":2,"product_id":123,"category_id":1},{"id":3,"product_id":"456"}
]}}';
echo "<pre>";
$array=json_decode($test);
foreach($array as $category => $products){
    foreach($products->products as $product){
        echo $product->id."<br/>";
    }                
}

demo.....

【讨论】:

  • $test 已经在数组中。所以我尝试了 json_decode(json_encode($my_array));然后按照你所说的在 foreach 中运行数组。但我得到了未定义的属性:stdClass::$products
  • 如果您的数据是 json 则转换数组,如果数组则删除 json_decode。
  • 数据是数组,在尝试不通过 json_decode 传递时,我得到“尝试获取非对象的属性”
  • foreach($array as $category => $products){ foreach($products->products as $product){ echo $product->id; } } 我得到“试图获取非对象的属性”
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 2011-06-20
  • 2021-10-09
  • 2013-10-12
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
相关资源
最近更新 更多