PHP-确认我正在使用数组,但仍然获得为foreach()提供的无效参数

时间:2014-07-08 21:59:15

标签: php arrays foreach

使用此代码:

    $brands = json_decode($data, true);

    echo json_encode($brands);
    echo "<br>";
    echo gettype($brands);
    echo "<br>";


    foreach ($brands['brand_name'] as $brand) {
        echo $brand, '<br>';
    }

我收到警告:为foreach()提供的参数无效。如果我添加这些行:

    $brands = json_decode($data, true);

    echo json_encode($brands);
    echo "<br>";
    echo gettype($brands);
    echo "<br>";


    foreach ($brands['brand_name'] as $brand) {
        echo $brand, '<br>';
    }

我可以看到我正在使用的数据,并确认$ brands是一个数组。以下是在浏览器中查看时页面上的输出:

{“result”:1,“results”:[{“brand_id”:“1”,“brand_name”:“Gildan”},{“brand_id”:“2”,“brand_name”:“American Apparel” },{“brand_id”:“3”,“brand_name”:“Rabbit Skins”},{“brand_id”:“4”,“brand_name”:“Anvil”},{“brand_id”:“5”,“brand_name “:”Bella / Canvas“},{”brand_id“:”6“,”brand_name“:”Alternative“},{”brand_id“:”8“,”brand_name“:”Hanes“},{”brand_id“: “9”,“brand_name”:“ALO”},{“brand_id”:“10”,“brand_name”:“Augusta”},{“brand_id”:“11”,“brand_name”:“Precious Cargo”}, { “brand_id”: “12”, “BRAND_NAME”: “其他”},{ “brand_id”: “13”, “BRAND_NAME”: “Jerzees”},{ “brand_id”: “15”, “BRAND_NAME”:” Liberty Bags“},{”brand_id“:”16“,”brand_name“:”Port Authority“},{”brand_id“:”17“,”brand_name“:”Next Level“}}} 阵列

警告:第36行的foreach()提供的参数无效

由于$ brands是一个数组,我认为这应该有效。任何想法为什么不是?

2 个答案:

答案 0 :(得分:2)

$brands是一个数组,但$brands['brand_name']不是,这就是你要循环的内容。 e.g。

$foo = array('bar' => 'baz');
^^^^--array  ^^^^^-key ^^^^---string

foreach($foo as $value) { }  // this is ok. $foo is an array
foreach($foo['bar'] as $value) { } // this is wrong. $foo['bar'] is a STRING

答案 1 :(得分:2)

您应该反复遍历$brands['results']

foreach ($brands['results'] as $brand) {
    echo $brand['brand_name'], '<br>';
}