Json解码api在php foreach失败

时间:2014-09-14 22:03:43

标签: php json foreach

几乎有这个工作,但我只是错过了一些愚蠢的事情。

大部分内容来自Cryptsy API示例。

变量已经填满,但是foreach语法出现了问题。

我得到的错误是"警告:为foreach()提供的参数无效"在foreach上($ marketinfo as $ marketdata){line

$result = json_decode($res,true);

foreach($result as $marketinfo){
    foreach($marketinfo as $marketdata){
        $marketid = $marketdata['marketid'];
        $label = $marketdata['label'];
        $pcc = $marketdata['primary_currency_code'];
        $pc = $marketdata['primary_currency_name'];
        $scc = $marketdata['secondary_currency_code'];
        $sc = $marketdata['secondary_currency_name'];
        $cv = $marketdata['current_volume'];
    }
}

通过这一点的一点帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

最可能的问题是$marketinfo不是数组。

echoprint_r() $marketinfo确认其内容是一个数组,然后再与foreach进行循环。

答案 1 :(得分:0)

您需要找出$ marketinfo的类型。使用is_array()和/或gettype(),例如:

$result = json_decode($res,true);

try {
foreach($result as $key=>$marketinfo){
    if(is_array($marketinfo)){
       foreach($marketinfo as $marketdata){
           $marketid = $marketdata['marketid'];
           $label = $marketdata['label'];
           $pcc = $marketdata['primary_currency_code'];
           $pc = $marketdata['primary_currency_name'];
           $scc = $marketdata['secondary_currency_code'];
           $sc = $marketdata['secondary_currency_name'];
           $cv = $marketdata['current_volume'];
       }
    }else{
       throw new Exception($key . ' $marketinfo is not an array, is '.gettype($marketinfo));
    }
}
}catch(Exception $e){
   echo $e->getMessage();
}