2017-04-20 30 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" 
相關問題