在PHP中,如何从变量路径获取JSON值?
这是一个示例json和一个带有2个参数的函数:一个json变量,并将路径拆分为键。
$myjson = json_decode('{
"myKey1": {
"myKey2": {
"myKey3": {
"myKey4": "myfinalvalue"
}
}
}
}');
function getJSONValue($myjson, $pathkey) {
// split path keys by ";"
$myjson-> ?? $pathkey ??
}
echo getJSONValue($myjson, "myKey1;myKey2;myKey3;myKey4");
// Should display "myfinalvalue"
静态等价物将是:
$myjson->myKey1->myKey2->myKey3->myKey4;
我试过了:
$myjson->$pathkey
但不幸的是,它不起作用......
答案 0 :(得分:2)
实际上,您的问题与JSON无关。这是从嵌套对象中获取值的方法:
function getValue($obj, $path) {
foreach(explode(';', $path) as $key) {
$obj = $obj->$key;
}
return $obj;
}
对于JSON部分,您的示例不是有效的JSON。它应该是这样的:
$myjson = json_decode('{
"myKey1": {
"myKey2": {
"myKey3": {
"myKey4": "myfinalvalue"
}
}
}
}');
此外,php对象区分大小写,如果对象中有myKey
,则路径字符串中应为myKey
(而不是mykey
)。
答案 1 :(得分:1)
function getJSONValue($myjson, array $pathkey) {
foreach($pathkey as $val){
$myjson = $myjson->{$val};
}
return $myjson;
}
$myjson = json_decode('{"myKey1": {"myKey2": {"myKey3": {"myKey4": "myfinalvalue"}}}}');
echo getJSONValue($myjson, ["myKey1","myKey2","myKey3","myKey4"]);
答案 2 :(得分:0)
这样的事情:
function getJSONValue() {
$args = func_get_args();
$json = array_shift($args);
$key = array_shift($args);
$value = $json->$key;
if(is_object($value)) {
array_unshift($args, $value);
return call_user_func_array('getJSONValue', $args);
}
return $value;
}
没有错误检查。
答案 3 :(得分:0)
好像你在混合使用PHP和JS。检查一下,看看如何创建一个Json字符串,然后从中获取一个onject,并访问键:
$myjson = json_encode(array(
'myKey1' => array(
'mykey2' => array(
'mykey3' => array(
'myKey4' => "myfinalvalue"
)
)
)
));
$obj = json_decode($string);
echo $obj->myKey1->mykey2->mykey3->myKey4
// "myfinalvalue"
直接粘贴json:
$obj = json_decode(
'{
myKey1: {
mykey2: {
mykey3: {
myKey4: "myfinalvalue"
}
}
}
}');
echo $obj->myKey1->mykey2->mykey3->myKey4
// "myfinalvalue"
为了更好地理解它,请阅读JSON_DECODE