【问题标题】:php: loop through json arrayphp:循环遍历json数组
【发布时间】:2011-06-11 12:02:22
【问题描述】:

我有一个 json 数组:

[
    {
        "var1": "9",
        "var2": "16",
        "var3": "16"
    },
    {
        "var1": "8",
        "var2": "15",
        "var3": "15"
    }
]

如何使用 php 循环遍历这个数组?

【问题讨论】:

标签: php json


【解决方案1】:

使用 json_decode() 解码 JSON 字符串,然后使用常规循环遍历它:

$arr = json_decode('[{"var1":"9","var2":"16","var3":"16"},{"var1":"8","var2":"15","var3":"15"}]');

foreach($arr as $item) { //foreach element in $arr
    $uses = $item['var1']; //etc
}

【讨论】:

  • 为此 +1。这正是我想要做的,但是关联数组缺少 true 给了我一个错误。
【解决方案2】:

如果需要关联数组,请将第二个函数参数设置为 true

如果需要关联数组,某些版本的 php 需要第二个参数 true

$json  = '[{"var1":"9","var2":"16","var3":"16"},{"var1":"8","var2":"15","var3":"15"}]';
$array = json_decode( $json, true );

【讨论】:

  • 没有对第二个assoc 参数的版本特定参考
【解决方案3】:

首先你必须解码你的 json :

$array = json_decode($the_json_code);

那么在 json 解码后你必须做 foreach

foreach ($array as $key => $jsons) { // This will search in the 2 jsons
     foreach($jsons as $key => $value) {
         echo $value; // This will show jsut the value f each key like "var1" will print 9
                       // And then goes print 16,16,8 ...
    }
}

如果您想要特定的东西,只需要求这样的钥匙。把它放在最后一个 foreach 之间。

if($key == 'var1'){
 echo $value;
}

【讨论】:

    【解决方案4】:

    使用json_decode将JSON字符串转换为PHP数组,然后对其使用普通的PHP数组函数。

    $json = '[{"var1":"9","var2":"16","var3":"16"},{"var1":"8","var2":"15","var3":"15"}]';
    $data = json_decode($json);
    
    var_dump($data[0]['var1']); // outputs '9'
    

    【讨论】:

    • 这不会遍历数组。它只是检索第一个值?
    猜你喜欢
    • 2013-02-06
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2012-11-14
    • 2011-04-25
    • 1970-01-01
    相关资源
    最近更新 更多