php利用嵌套数组拼接与解析json的方法

在PHP中,一个数组可以包含多个元素。如果一个元素本身又是一个数组,那么我们就称这个数组为嵌套数组。例如:

PHP利用嵌套数组拼接与解析JSON的方法

什么是嵌套数组

在PHP中,一个数组可以包含多个元素。如果一个元素本身又是一个数组,那么我们就称这个数组为嵌套数组。例如:

$array = [
    'name' => '张三',
    'age' => 20,
    'hobbies' => [
        '篮球',
        '足球',
        '游泳'
    ]
];

在上面的代码中,$array就是一个嵌套数组,'hobbies'这个元素的值是一个数组。

用嵌套数组拼接JSON

在PHP中,可以将一个嵌套数组转换为JSON格式的字符串,需要用到json_encode()函数。例如:

$array = [
    'name' => '张三',
    'age' => 20,
    'hobbies' => [
        '篮球',
        '足球',
        '游泳'
    ]
];
$json = json_encode($array);
echo $json;

上面的代码中,$json的值将会是:

{"name":"张三","age":20,"hobbies":["篮球","足球","游泳"]}

可以发现,json_encode()函数会将数组中的所有元素转换为JSON格式,嵌套数组也会被转换为JSON格式的数组(即用中括号[]包裹起来)。

在实际开发中,为了构建复杂的JSON格式,我们可以利用嵌套数组来拼接JSON。例如:

$array = [
    'name' => '张三',
    'age' => 20,
    'hobbies' => [
        '篮球',
        '足球',
        '游泳'
    ]
];
$extra = [
    'city' => '北京',
    'hobbies' => [
        '乒乓球'
    ]
];
$json = json_encode([
    $array,
    $extra
]);
echo $json;

上面的代码中,我们将两个嵌套数组拼接在一起,利用json_encode()函数转换为JSON格式的字符串。如果两个数组中有相同的元素名,后面的元素会覆盖前面的元素。

最终,$json的值将会是:

[{"name":"张三","age":20,"hobbies":["篮球","足球","游泳"]},{"city":"北京","hobbies":["乒乓球"]}]

解析JSON字符串为嵌套数组

在PHP中,可以将一个JSON格式的字符串解析为嵌套数组,需要用到json_decode()函数。例如:

$json = '{"name":"张三","age":20,"hobbies":["篮球","足球","游泳"]}';
$array = json_decode($json, true);
print_r($array);

上面的代码中,$array就是解析出来的嵌套数组。

如果第二个参数不写或为false,则json_decode()函数会返回一个对象,而非数组。

$json = '{"name":"张三","age":20,"hobbies":["篮球","足球","游泳"]}';
$obj = json_decode($json);
echo $obj->name;

上面的代码中,$obj是一个对象,可以通过->操作符来访问其中的属性。

示例说明

示例一:构造包含乘客信息的JSON数据

下面的代码演示了如何构造包含多个乘客信息的JSON数据:

$passengers = [
    [
        'name' => '张三',
        'phone' => '13811112222',
        'seats' => [
            'A1',
            'B1'
        ]
    ],
    [
        'name' => '李四',
        'phone' => '13811113333',
        'seats' => [
            'A2',
            'B2'
        ]
    ]
];
$json = json_encode($passengers);
echo $json;

输出的JSON数据为:

[
    {
        "name": "张三",
        "phone": "13811112222",
        "seats": [
            "A1",
            "B1"
        ]
    },
    {
        "name": "李四",
        "phone": "13811113333",
        "seats": [
            "A2",
            "B2"
        ]
    }
]

示例二:解析服务器返回的JSON数据

下面的代码演示了如何从服务器获取JSON数据并解析为嵌套数组:

$url = 'https://jsonplaceholder.typicode.com/posts';
$json = file_get_contents($url);
$posts = json_decode($json, true);
foreach ($posts as $post) {
    echo $post['title'] . "\n";
}

上面的代码中,我们从https://jsonplaceholder.typicode.com/posts获取JSON数据,然后使用json_decode()函数将其解析为嵌套数组。最后,利用foreach循环遍历数组中的所有JSON对象,并输出它们的title属性。

本文标题为:php利用嵌套数组拼接与解析json的方法

基础教程推荐