php - 用php动态解析多个json数组对象
问题描述
我有一个名为“brands.json”的json文件
{
"title":"List of brands",
"version" : 1,
"nike": [
{"type":"shoes","size":10,"color":"black"},
{"type":"shirt","size":"S","color":"black"}
],
"converse": [
{"type":"shoes","size":10,"color":"red"},
{"type":"backpack","size":"N/A","color":"red"}
],
"champion": [
{"type":"shoes","size":10,"color":"blue"},
{"type":"pants","size":"M","color":"grey"}
]
}
我在网上查看了一些示例并获取了这段代码
<?php
$read = file_get_contents("report.json");
$json = json_decode($read, true);
foreach($json as $key => $val){
if(is_array($val)){
echo "$key : <br>";
foreach($key as $k => $v){
echo "$k => $v<br>";
}
}
else {
echo "$key => $val<br>";
}
}
?>
我可以打印出来
标题 => 品牌列表
版本 => 1
耐克:
交谈 :
冠军:
但我想在这些品牌中加入阵列。我正在考虑foreach
在 if 语句中设置一个循环。但是,它返回错误
耐克:警告:为 foreach() 提供的参数无效。
一些资源建议做类似的事情,$json->nike as $item => $v
但这将是多余的,因为我也有 converse 和 Champion 数组。如果有人可以指导我找到一个好的资源或提供一个代码示例,我将不胜感激。
预期表耐克:
类型 | 尺寸 | 颜色
鞋子| 10 | 黑色的
衬衫| 小号 | 黑色的
解决方案
创建缓冲输出并显示它的函数
$read = '{
"title":"List of brands",
"version" : 1,
"nike": [
{"type":"shoes","size":10,"color":"black"},
{"type":"shirt","size":"S","color":"black"}
],
"converse": [
{"type":"shoes","size":10,"color":"red"},
{"type":"backpack","size":"N/A","color":"red"}
],
"champion": [
{"type":"shoes","size":10,"color":"blue"},
{"type":"pants","size":"M","color":"grey"}
]
}';
$json = json_decode($read, true);
// this function will run recursively
function display($val){
// create output buffer variable
$output = "";
// check is array or not
if(is_array($val)){
// check is multimensional or not
if(isset($val[0])){
foreach($val as $v){
$output .= "<br/>".display($v);
}
}else{
foreach($val as $k => $v){
$output .= $k." => ".display($v)."<br/>";
}
}
}else{
// append output if it just a value
$output .= $val;
}
return $output;
}
echo display($json);
?>
推荐阅读
- r - 通过添加列/向量来更新 R 中的文件
- c# - 使用自定义属性从 C# 中的引用项目初始化主类中的自定义属性
- python - 更优雅的装箱方式
- python - 在多索引数据框中添加缺失日期索引
- java - 是否可以使用 java -cp 运行不在包中的类
- graphite - Graphite 未显示最近的数据
- ruby - Chef - 读出节点属性并将其存储在同一厨师客户端运行中的另一个节点属性中失败
- java - 如何自定义材质组件的日期范围选择器的颜色和其他内容?
- autodesk-forge - 使用 UpdateIPTParam App Bundle 修改您的模型锻造教程
- php - 没有 www 前缀的 WP 站点无法正常工作