在 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] );
我使用第二个参数将 JSON 字符串解码为 True 以强制结果为数组,然后调用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
删除重复键。