【问题标题】:How to get the values from JSON Array Stored as Value in JSON using PHP?如何使用 PHP 从存储为 JSON 中的值的 JSON 数组中获取值?
【发布时间】:2017-04-20 08:31:00
【问题描述】:
`{
"student": [{
"name": "Alice",
"rno": "187654"
}]
}`
我正在尝试使用 PHP 代码获取 rno 的值
`$data = json_decode($json, true);
foreach ($data as $item) {
$name = $item['name'] ;
$number= $item['rno'] ;
}`
【问题讨论】:
标签:
php
arrays
json
foreach
nested
【解决方案1】:
@Sahil Gulati 的代码在 php 中解析 json 的方式更加完美和正确
这里是另一种在php中解析json数据的方法
<?php
$data = json_decode($json, true);
foreach ($data as $item) {
foreach ($item as $val) {
echo $name = $val['name'];
echo $number = $val['rno'];
}
}
?>
我分享的上述代码您可以轻松理解。但是在学习了如何在 php 中解析 json 数据之后,你应该使用@Sahil Gulati 的方法。
【解决方案2】:
将其更改为:
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'];
}
【解决方案3】:
您应该仔细查看 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"