下面是详细的“PHP实现数组转JSon和JSon转数组的方法示例”的攻略:
一、数组转JSON
1. json_encode() 函数
json_encode()函数是PHP中将一个数组转换为JSON格式字符串的标准方法。
语法:string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
示例代码:
<?php
$arr = array('name' => '张三', 'age' => 20, 'city' => '北京');
$json_str = json_encode($arr);
echo $json_str;
?>
输出结果:
{"name":"张三","age":20,"city":"北京"}
2. json_encode() 函数的可选参数
json_encode()函数有两个可选参数,可以对JSON字符串的输出进行更多控制:
-
options:编码选项,可使用以下常量:
-
JSON_HEX_QUOT:所有的双引号都将被转义为\u0022,而不只是那些在HTML标签或属性中出现的。
-
JSON_HEX_TAG:所有的< 和 > 都将被转义为 \u003C 和 \u003E。
-
JSON_HEX_AMP:所有的&都将被转义为 \u0026。
-
JSON_HEX_APOS:所有的‘将被转义为 \u0027。
-
JSON_NUMERIC_CHECK:将所有数字转换为字符串类型,但是不允许使用科学计数法。
-
-
depth:设置最大深度,防止出现递归溢出的情况,默认值是512。可以将其设置成1表示最多只编码一层深的数组。
示例代码:
<?php
$arr = array('name' => '张三', 'age' => 20, 'city' => '北京');
$json_str = json_encode($arr, JSON_HEX_QUOT | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS);
echo $json_str;
?>
输出结果:
{"name":"\u5f20\u4e09","age":20,"city":"\u5317\u4eac"}
二、JSON转数组
1. json_decode() 函数
json_decode()函数是PHP中将一个JSON格式字符串转换为数组的标准方法。
语法:mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
示例代码:
<?php
$json_str = '{"name":"张三","age":20,"city":"北京"}';
$arr = json_decode($json_str, true);
print_r($arr);
?>
输出结果:
Array
(
[name] => 张三
[age] => 20
[city] => 北京
)
2. json_decode() 函数的可选参数
json_decode()函数也有一些可选参数,可以对JSON字符串的解码进行更多的控制:
-
assoc:当为true时,返回的对象被转换为数组。当为false时,返回的对象是一个PHP对象。
-
depth:设置最大深度,防止出现递归溢出的情况,默认值是512。
-
options:JSON解码时使用的选项,可使用以下常量:
-
JSON_BIGINT_AS_STRING:将JSON中的大整数转换为字符串。否则,大整数将返回null。
-
JSON_OBJECT_AS_ARRAY:将JSON中的对象强制转换为数组。否则,JSON中的对象将返回一个PHP对象。
-
示例代码:
<?php
$json_str = '{"name":"张三","age":20,"city":"北京"}';
$obj = json_decode($json_str);
$arr = json_decode($json_str, true);
print_r($obj);
print_r($arr);
?>
输出结果:
stdClass Object
(
[name] => 张三
[age] => 20
[city] => 北京
)
Array
(
[name] => 张三
[age] => 20
[city] => 北京
)
这就是PHP实现数组转JSon和JSon转数组的方法示例的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现数组转JSon和JSon转数组的方法示例 - Python技术站