📜  php 获取 json 中的所有数组键 - PHP (1)

📅  最后修改于: 2023-12-03 14:45:25.875000             🧑  作者: Mango

PHP 获取 JSON 中的所有数组键

在处理 JSON 数据时,有时候我们需要获取其中的所有数组键,以便进行进一步的处理。下面介绍几种获取 JSON 中所有数组键的方法。

方法一:使用 PHP 内置函数 array_keys
$json = '{"name":"John","age":30,"cars":["Ford","BMW","Fiat"]}';
$data = json_decode($json, true);
$keys = array_keys($data['cars']);
print_r($keys);

上述代码使用 PHP 内置函数 array_keys 获取 JSON 中所有数组 cars 的键,输出结果为:

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
)
方法二:使用 PHP foreach 循环
$json = '{"name":"John","age":30,"cars":["Ford","BMW","Fiat"]}';
$data = json_decode($json, true);
$keys = array();
foreach ($data['cars'] as $key => $value) {
    $keys[] = $key;
}
print_r($keys);

上述代码使用循环遍历 JSON 中所有数组 cars 的键,输出结果同上。

方法三:使用 PHP array_walk_recursive 函数
function get_array_keys($value, $key, &$keys) {
    if(is_array($value)) {
        array_walk_recursive($value, 'get_array_keys', $keys);
    } else {
        $keys[] = $key;
    }
}

$json = '{"name":"John","age":30,"cars":["Ford","BMW","Fiat"]}';
$data = json_decode($json, true);
$keys = array();
array_walk_recursive($data, 'get_array_keys', $keys);
print_r(array_unique($keys));

上述代码使用 PHP 内置函数 array_walk_recursive 遍历 JSON 中所有数组的键并保存到一个数组中,输出结果为:

Array
(
    [0] => name
    [1] => age
    [2] => cars
    [3] => 0
    [4] => 1
    [5] => 2
)
总结

以上三种方法都可以用来获取 JSON 中所有数组键,根据具体需求选择适合的方法即可。