php - 深度访问多维对象的索引
问题描述
我有一个 .json 配置文件。使用 PHP,我试图通过json_decode()将其内容作为对象获取并验证它。JSON 文件包含多维数据。问题在于动态访问成员的深度。
例如,考虑以下数据:
{
"somebody": {
"name": "Ali",
"age": 13,
"life": {
"stat": "good",
"happy": true
}
}
如何动态访问以下值?
$happy = $data->somebody->life->happy;
我的意思是动态访问是这样的:
$happyIndex = "somebody->life->happy";
$happy = $data->{$happyIndex};
另外,我不想使用eval()。
谢谢。
解决方案
假设您有 JSON 数据返回
data="{
"somebody": {
"name": "Ali",
"age": 13,
"life": {
"stat": "good",
"happy": true
}
}"
data = jQuery.parseJSON(data);
然后您可以通过导航导航到数据的不同部分
var name= data.somebody[0].name;
var age= data.somebody[0].age;
如果“某人”数组中有多个数据,则需要一个 $.each 函数。
PHP版本:
$data='{"somebody":{"name": "Ali","age": "13","life": {"stat": "good","happy": "true"} }}';
$data = json_decode($data,TRUE);
$name= $data['somebody']['name'];
$age= $data['somebody']['age'];
echo("<pre>");
echo($name);
echo($age);
echo("</pre>");
//OUTPUT RESULT Ali 13
推荐阅读
- swift - 使用 Alamofire 5 上传文件到 RocketChat 服务器
- python - 与bash md5sum相比,Python hashlib md5输出不同且速度慢?
- c# - 清理帖子条目!ASP.NET API
- javascript - 如何从 HTML 获取信息到 Javascript 但已连接到 API
- azure-cosmosdb - 如何通过 SDK 或 Select QUERY 在 CosmosBD 中使用分区键
- c# - 有没有办法可以在 Migradoc 中动态创建表
- jboss - jboss Standalone-full.xml ,min-pool-size 和 max-pool-size 问题
- amazon-web-services - 如何通过特定用户的 Bearer 令牌访问与 S3 Bucket 连接的 AWS CloudFront(JWT 自定义身份验证)
- linux-kernel - 即使编译成功也无法安装内核
- python - PyInstaller 生成的 PyQT5 应用程序的可执行文件显示“QCoreApplication::exec: 事件循环已在运行”