JSON解码时出现警告错误

时间:2017-04-29 17:45:52

标签: php

我在foreach中的一个json解码foreach上收到警告(尽管代码工作很奇怪)警告是:警告:为foreach()提供的参数无效它指的是这一行: foreach($ value as $ val){

以下是JSON响应:

Array
(
    [ACTION] => avail.datacenters
    [DATA] => Array
        (
            [0] => Array
                (
                    [LOCATION] => Dallas, TX, USA
                    [DATACENTERID] => 2
                    [ABBR] => dallas
                )

            [1] => Array
                (
                    [LOCATION] => Fremont, CA, USA
                    [DATACENTERID] => 3
                    [ABBR] => fremont
                )

            [2] => Array
                (
                    [LOCATION] => Atlanta, GA, USA
                    [DATACENTERID] => 4
                    [ABBR] => atlanta
                )

            [3] => Array
                (
                    [LOCATION] => Newark, NJ, USA
                    [DATACENTERID] => 6
                    [ABBR] => newark
                )

            [4] => Array
                (
                    [LOCATION] => London, England, UK
                    [DATACENTERID] => 7
                    [ABBR] => london
                )

            [5] => Array
                (
                    [LOCATION] => Tokyo, JP
                    [DATACENTERID] => 8
                    [ABBR] => tokyo
                )

            [6] => Array
                (
                    [LOCATION] => Singapore, SG
                    [DATACENTERID] => 9
                    [ABBR] => singapore
                )

            [7] => Array
                (
                    [LOCATION] => Frankfurt, DE
                    [DATACENTERID] => 10
                    [ABBR] => frankfurt
                )

            [8] => Array
                (
                    [LOCATION] => Tokyo 2, JP
                    [DATACENTERID] => 11
                    [ABBR] => shinagawa1
                )

        )

    [ERRORARRAY] => Array
        (
        )

)

我的foreach代码:

                $randDCID = array();
                foreach ($linodeRegions as $value) {
                    foreach ($value as $val) {
                        echo $val['DATACENTERID'] . "<br />";
                        $randDCID[] = $val['DATACENTERID'];
                    }                           
                }

任何人都可以在警告上看到问题(尽管它正在输出所需的结果)。

1 个答案:

答案 0 :(得分:1)

错误可能来自ACTION索引和数组的相应值(字符串)。假设原始数组中$linodeRegions的事实,在这种情况下不需要创建嵌套循环,只需使用这样的foreach循环:

$randDCID = array();
foreach ($linodeRegions['DATA'] as $value) {
    echo $value['DATACENTERID'] . "<br />";
    $randDCID[] = $value['DATACENTERID'];                         
}