1

私はこのようないくつかのjsonデータを持っています。今、すべてのノード「b」を数えたいと思います。

[
   {
      "a":[
         {
            "b":"aaa" //in case this is the first node "b", definition number 1
         },
         {
            "b":"bbb" //this is the second node "b", definition number 2
         }
      ]
   },
   {
      "a":[
         {
            "b":"ccc" //this is the third node "b", definition number 3
         },
         {
            "b":"ddd" //this is the forth node "b", definition number 4
         }
      ]
   },
   {
      "c":"eee"
   },
]

この例では、4 つのノード "b" がありますが、それらをカウントするにはどうすればよいですか? PHPコードで3番目のノード「b」を取得する方法は?

$json=json_decode($txt);
foreach($json as $data){
    if($data->a){
        foreach($data->a as $row){
            echo $row->b.'<br />';
                    //count($row->b);
        }
    }
} 
4

3 に答える 3

1

それらを数えるには、次のようにカウンターを保持する必要があります。

$counter = 0;
$json = json_decode($txt);
foreach ($json as $data) {
    if ($data->a) {
        foreach($data->a as $row){
            $counter++;
            if ($counter == 3) {
                echo 'Third "b": ' . $row->b . '<br />';
            }
        }
    }
} 
echo 'Number of "b"s: ' . $counter . '<br />';
于 2013-02-21T09:04:17.123 に答える
0
    $json = json_decode($txt); echo count($json, COUNT_RECURSIVE); 
于 2013-02-21T09:37:24.630 に答える
0

コードに従って、 isset 演算子を使用して実行できます。

$json=json_decode($txt);
$count = 0;
foreach($json as $data){
if($data->a){
    foreach($data->a as $row){
        if (isset($row->b))
            ++$count;
        }
    }
}
echo $count;
于 2013-02-21T09:08:14.197 に答える