2017-04-20 76 views

回答

1

@Sahil古拉提的代码是更加完善和正确的方式来解析json的php

这里是另一种方式在PHP

<?php 

$data = json_decode($json, true); 

foreach ($data as $item) { 
    foreach ($item as $val) { 
     echo $name = $val['name']; 
     echo $number = $val['rno']; 
    } 
} 

?> 

,我已经共享,你可以很容易地理解上面的代码解析JSON数据。但在了解了如何在php中解析json数据之后,您应该使用@Sahil Gulati的方法。

1

变化得到RNO的价值这:

foreach ($data as $item) 

此:

foreach ($data["student"] as $item) 

Try code snippet here

PHP代码:

<?php 

ini_set('display_errors', 1); 
$data = json_decode($json, true); 
foreach ($data["student"] as $item) 
{ 
    $name = $item['name']; 
    $number = $item['rno']; 
} 
0

你应该采取的JSON编码数据的结构一探究竟。这有助于实现干净迭代:

<?php 
$input = <<<JSON 
{ 
    "student": [{ 
     "name": "Alice", 
     "rno": "187654" 
    }] 
} 
JSON; 
$data = json_decode($input); 
$output = []; 
array_walk($data->student, function($entry) use (&$output) { 
    $output[] = $entry->rno; 
}); 
print_r($output); 

的上述代码的输出明显是:

Array 
(
    [0] => 187654 
) 

输出格式已被选作阵列,由于JSON结构表明多个学生可以被包含。


如果你只在student数组中的第一个条目的rno财产直接兴趣的话,那么你可以直接访问它:

<?php 
$input = <<<JSON 
{ 
    "student": [{ 
     "name": "Alice", 
     "rno": "187654" 
    }] 
} 
JSON; 
$data = json_decode($input); 
var_dump($data->student[0]->rno); 

该变种的输出显然是:

string(6) "187654"