如何解析第二级json php

时间:2013-12-12 16:15:38

标签: php json

我有一个像这样的json:

[{"a":"1", "b":"2"},{"a":"4", "b":"5"},{"a":"15", "b":"2"}]

我希望每行都有php来更新我的数据库。我不知道第二级json的数量是多少。有时会是1,有时是2,有时甚至更多。

我想,我能读到这样的事情:

$json = file_get_contents('php://input');
$json_post = json_decode($json, true);
$i = 0;

while(isset($json_post[$i])){
//Bla bla
$i++;
}

我在php中使用了很多次json文件,但总是只有一个级别。这是我第一次不止一次。 但我不能。我知道,因为我检查过,在$ json中我有完整的json文件。

3 个答案:

答案 0 :(得分:4)

您需要引用数组中的子键:

$json = file_get_contents('php://input');
$json_post = json_decode($json, true);
$i = 0;

while(isset($json_post[$i])){
    echo $json_post[$i]["a"];
    // or 
    echo $json_post[$i][0];
    $i++;
}

可在此处找到更多文档:http://php.net/manual/en/language.types.array.php

这里有一个类似的问题:PHP reference specific key and value within multidimensional array

答案 1 :(得分:1)

我会使用foreach:

foreach($json_post as $key => $value) {
    echo $value;
}

答案 2 :(得分:1)

$j = '[{"a":"1", "b":"2"},{"a":"4", "b":"5"},{"a":"15", "b":"2"}]';

$decoded = json_decode($j, true);
//var_dump($decoded);


foreach ($decoded as $key => $post) {
   $valueOfA = $post['a'];
   $valueOfB = $post['b'];
}