在 PHP >= 5.4 中,您可以通过一行代码获取您的密钥:
$nodeNames = array_keys( json_decode( $jsonString, True )['result'][0] );
3v4l.org演示
在低版本(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 ) ) );
}
或者,使用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
删除重复的键。