📜  php json 数据到数组 - PHP (1)

📅  最后修改于: 2023-12-03 15:03:35.188000             🧑  作者: Mango

PHP中JSON数据转数组方法

在PHP中,JSON(JavaScript Object Notation)数据是一种轻量级的数据交换格式。常见于API接口等数据传输场景。在PHP中,可以通过内置函数 json_decode() 将JSON数据转换为数组,方便在后续的代码中处理。

json_decode() 函数

json_decode() 函数是PHP内置的一个函数,用于将JSON字符串转化为PHP数组。

语法
mixed json_decode(string $json_string, bool $assoc = false, int $depth = 512, int $options = 0)
参数说明
  • json_string:必需。要转换的JSON字符串。
  • assoc:可选。默认为 false,当参数为 true 时,返回的数组元素为关联数组(即对象)。
  • depth:可选。设置最大递归深度。默认值为 512
  • options:可选。设置JSON解析流程中遇到的各种选项。默认值为 0,即为无选项。
返回值

如果成功,返回转换后的数组;如果失败,返回 null

示例代码
<?php
$json_str = '{
    "name": "John",
    "age": 30,
    "gender": "male",
    "languages": ["Java", "PHP", "Python"]
}';

$array = json_decode($json_str);

print_r($array);

// 输出:
/*Array
(
    [name] => John
    [age] => 30
    [gender] => male
    [languages] => Array
        (
            [0] => Java
            [1] => PHP
            [2] => Python
        )

)*/
?>
将JSON字符串转换为关联数组

如果需要将JSON数据转换为关联数组,在调用函数时需要将第二个参数 assoc 的值设为 true

<?php
$json_str = '{
    "name": "John",
    "age": 30,
    "gender": "male",
    "languages": ["Java", "PHP", "Python"]
}';

$array = json_decode($json_str, true);

print_r($array);

// 输出:
/*Array
(
    [name] => John
    [age] => 30
    [gender] => male
    [languages] => Array
        (
            [0] => Java
            [1] => PHP
            [2] => Python
        )

)*/
?>
处理解析失败的情况

json_decode() 函数无法解析JSON字符串时,返回的值为 null。可以通过 json_last_error() 函数获取解析失败的原因:

<?php
$json_str = '{
    "name: "John",   // 这里的冒号是错误的
    "age": 30,
    "gender": "male",
    "languages": ["Java", "PHP", "Python"]
}';

$array = json_decode($json_str, true);

if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'JSON解析失败,原因:'.json_last_error_msg();
} else {
    print_r($array);
}
?>
总结

json_decode() 函数是PHP内置的一个函数,用于将JSON字符串转化为PHP数组。在调用函数时,可以设置是否将返回值转换为关联数组。同时需要注意处理解析失败的情况,以保证代码的鲁棒性。