在 PHP >= 5.4 上,您可以通过一行代码获取密钥:
$nodeNames = array_keys( json_decode( $jsonString, True )['result'][0] );
eval.in demo
在较低版本(PHP >= 5.2.16)上,您必须将上述代码分成两行:
$array = json_decode( $jsonString, True );
$nodeNames = array_keys( $array['result'][0] );
我将第二个参数为True的JSON字符串解码为强制结果为数组,然后调用array_keys获取array['result'][0]的键。
编辑:更灵活
您的示例可以如上处理而没有问题,但是如果原始 JSON 字符串具有不同的键会发生什么情况?如果在第一个 result 行中没有所有键,则上述解决方案将失败。要获取所有密钥,您可以使用以下代码:
$array = json_decode( $jsonString, True );
$nodeNames = array();
foreach( $array['result'] as $row )
{
$nodeNames = array_unique( array_merge( $nodeNames, array_keys( $row ) ) );
}
eval.in demo
或者,使用array_filter,使用以下代码:
$array = json_decode( $jsonString, True );
$nodeNames = array();
array_filter
(
$array['result'],
function( $row )
{
global $nodeNames;
$nodeNames = array_unique( array_merge( $nodeNames, array_keys( $row ) ) );
}
);
通过这两个等效示例,我处理每个result 行,合并$nodeNames 数组中的键并使用array_unique 删除重复键。