php 转换 json 方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/signmem/article/details/82688937

说明

了解 PHP 下数组使用方法
了解函数 json_decode, json_encode 使用方法
php 环境下如何输出 json 格式

前提

PHP 下, 默认不支持直接进行 json 格式定义
PHP 下支持 array 定义
可以通过函数帮助, 把(多维)数组转换成为 json 格式输出
注意, 中文字符需要特殊处理

数组

一维数组定义方法

定义方法

 $a= [ 'a' => '123', 'b' => '234' ];
 $b=array( 'a' => '123', 'b' => '234' );
 print_r ($a);
 print_r ($b);

输出效果

Array
(
    [a] => 123
    [b] => 234
)
Array
(
    [a] => 123
    [b] => 234
)

多维数组定义方法

定义方法,

$a = array(
    'a' => '123',
    'b' => array(
        'c' => '234',
        'd' => '345',
    ),
    'e' => '456',
  );

$b = [
    'f' => '123',
    'g' => [
        'h' => '234',
        'i' => '345',
    ],
    'j' => '456',
];

输出效果

Array
(
    [a] => 123
    [b] => Array
        (
            [c] => 234
            [d] => 345
        )

    [e] => 456
)
Array
(
    [f] => 123
    [g] => Array
        (
            [h] => 234
            [i] => 345
        )

    [j] => 456
)

数组叠加方法

定义方法

$c = array();
array_push($c, $a);
array_push($c, $b);
print_r ($c);

输出效果

Array
(
    [0] => Array
        (
            [a] => 123
            [b] => Array
                (
                    [c] => 234
                    [d] => 345
                )

            [e] => 456
        )

    [1] => Array
        (
            [f] => 123
            [g] => Array
                (
                    [h] => 234
                    [i] => 345
                )

            [j] => 456
        )

)

把数组定义为 JSON 格式

定义方法: (注意,带中文输出)

$a = array(
    'a' => '123',
    'b' => array(
        'c' => '234',
        'd' => '345',
    ),
    'e' => '中文字符456',
  );

$b = [
    'f' => '123',
    'g' => [
        'h' => '234',
        'i' => '345',
    ],
    'j' => '中文字符c',
];
$c = array();

array_push($c, $a);
array_push($c, $b);
var_dump(json_encode($c,JSON_UNESCAPED_UNICODE));

输出效果

string(119) "[{"a":"123","b":{"c":"234","d":"345"},"e":"中文字符456"},{"f":"123","g":{"h":"234","i":"345"},"j":"中文字符c"}]"

参考例子

例子:

这里有两个多维数组,数组具有相同的元素 ‘uuid’
把数组转换为 JSON

定义方法

<?php

$a = [
   'uuid' => 'c5966c24-7e8d-4e22-b4c8-29a035fec704',
   'ipaddr' => '1.1.1.1',
   'hostname' => 'test1.google.com',
];

$b = [
   'uuid' => '3e7a74b4-75df-41b5-b0f9-88f459b68b3c',
   'ipaddr' => '2.2.2.2',
   'hostname' => 'test2.google.com',
];

$c = array();
array_push($c, $a);
array_push($c, $b);

$d = [
   'uuid' => 'c5966c24-7e8d-4e22-b4c8-29a035fec704',
   'user' => 'terry',
   'sex' => 'male',
];

$e = [
   'uuid' => '3e7a74b4-75df-41b5-b0f9-88f459b68b3c',
   'user' => 'mary',
   'sex' => 'female',
];

$f = array();
array_push($f, $d);
array_push($f, $e);

$g = json_encode($c,JSON_UNESCAPED_UNICODE);
$h = json_encode($f,JSON_UNESCAPED_UNICODE);

print $g;
print $h;
?>

输出效果

json1
[{"uuid":"c5966c24-7e8d-4e22-b4c8-29a035fec704","ipaddr":"1.1.1.1","hostname":"test1.google.com"},{"uuid":"3e7a74b4-75df-41b5-b0f9-88f459b68b3c","ipaddr":"2.2.2.2","hostname":"test2.google.com"}]
json2
[{"uuid":"c5966c24-7e8d-4e22-b4c8-29a035fec704","user":"terry","sex":"male"},{"uuid":"3e7a74b4-75df-41b5-b0f9-88f459b68b3c","user":"mary","sex":"female"}]

把上述两个数组组合为一个数组

组合方法

  foreach(json_decode($g, JSON_UNESCAPED_UNICODE) as $key => $array)
  {
     $r[$key] = array_merge(json_decode($h, JSON_UNESCAPED_UNICODE)[$key],$array);
  }

输出效果, 结合成为一个 json 数据

[{"uuid":"c5966c24-7e8d-4e22-b4c8-29a035fec704","user":"terry","sex":"male","ipaddr":"1.1.1.1","hostname":"test1.google.com"},{"uuid":"3e7a74b4-75df-41b5-b0f9-88f459b68b3c","user":"mary","sex":"female","ipaddr":"2.2.2.2","hostname":"test2.google.com"}]

猜你喜欢

转载自blog.csdn.net/signmem/article/details/82688937
今日推荐