php - PHP:在数组 1 深度到多深度 json 之间转换
问题描述
我像这样保持数据 1 深(也许保留在数据库中)
$data = [
"games" => "",
"games>sport" => "",
"games>sport>enabled" => true,
"feature" => "",
"feature>register" => "",
"feature>register>enabled" => true,
"contact" => "",
"contact>tel" => "",
"contact>tel>lang" => "th",
"contact>tel>number" => "012345678"
];
然后转换为 json
结果:
{
"games": {
"sport":
"enabled": true
}
},
"feature": {
"register": {
"enabled": true,
"captcha": true
}
},
"contact": {
"tel": {
"lang": "th",
"number": "012345678"
}
}
}
编辑:将其标记为与未关闭事件的文章重复的人。我必须找到我的路
这是我自己的答案。
$col = [];
foreach($data as $key => $val) {
$ex = explode(">", $key);
$cnt = count($ex);
if (count($ex) > 5) { die('Maximum deep is 5'); }
if ($cnt == 1) { $col[$ex[0]] = $val; }
if ($cnt == 2) { $col[$ex[0]][$ex[1]] = $val; }
if ($cnt == 3) { $col[$ex[0]][$ex[1]][$ex[2]] = $val; }
if ($cnt == 4) { $col[$ex[0]][$ex[1]][$ex[2]][$ex[3]] = $val; }
if ($cnt == 5) { $col[$ex[0]][$ex[1]][$ex[2]][$ex[3]][$ex[4]] = $val; }
}
die(json_encode($col));
解决方案
推荐阅读
- javascript - 在线时将数据加载到服务
- javascript - 未捕获的 ReferenceError:未定义 jqXHR
- api - Watson Assistant (Conversation) 能否将 API 作为对话的一部分?
- angular - 为什么每个 API 请求都会创建一个新会话?
- java - 在构造函数中创建对象后的字符串 null
- docker - 如何“geth init”并使用 Docker-compose 开始 geth 挖掘?
- sharepoint - Sharepoint 2013 安装
- html - 网站上的地图
- c++ - C++ 到 Delphi 的转换。`this` 指针
- ios - 从 alamofire 获取数据 (responseString)