题目: 现有 Json 数据,格式如下: json = { "a": [ { "b": "c" } , ... ] , ... };
请实现一个方法:get(json, "a[0].b"),使其返回值为 c。
要求:自己实现遍历逻辑,不允许使用正则表达式、不允许使用 eval()等类似 方法。
测试用例:
json = { "a": [ { "b": "c" }, "d" ], "x": 1}
get(json, "a[0].b") == "c"
get(json, "a[1]") == "d"
get(json, "x") == 1
<?php
$json ='{ "a": [ { "b": "c" }, "d" ], "x": 1}';
$arr = json_decode($json,1);
print_r(get($arr,"a[0].b"));
print_r(get($arr,"a[1]"));
print_r(get($arr,"x"));
function get($json,$str){
$a = ['[',']','.'];
$strlen = strlen($str);
$s="";
$r=$json;
for ($i=0;$i<$strlen;$i++){
$ii=true;
if($i == $strlen-1){
$ii=false;
}
if(!in_array($str[$i],$a)){
$s.=$str[$i];
}else{
$ii=false;
}
if($ii ==false){
if($s =='')continue;
$r = $r[$s];
if($i == $strlen-1){
break;
}
$s="";
}
}
return $r;
}