- PHP 教程
- PHP - 首页
- PHP - 路线图
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 特性
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP - 数据类型
- PHP - 类型转换
- PHP - 类型混淆
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件与 I/O
- PHP - 数学函数
- PHP - Heredoc 和 Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期与时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符
- PHP - 算术运算符
- PHP - 比较运算符
- PHP - 逻辑运算符
- PHP - 赋值运算符
- PHP - 字符串运算符
- PHP - 数组运算符
- PHP - 条件运算符
- PHP - 展开运算符
- PHP - 空值合并运算符
- PHP - 比较符
- PHP 控制语句
- PHP - 决策制定
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP - 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - Do…While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值传递
- PHP - 按引用传递
- PHP - 默认参数
- PHP - 命名参数
- PHP - 可变参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量作用域
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头函数
- PHP - 可变函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 文件处理
- PHP - 文件处理
- PHP - 打开文件
- PHP - 读取文件
- PHP - 写入文件
- PHP - 文件是否存在
- PHP - 下载文件
- PHP - 复制文件
- PHP - 追加文件
- PHP - 删除文件
- PHP - 处理 CSV 文件
- PHP - 文件权限
- PHP - 创建目录
- PHP - 列出文件
- 面向对象的 PHP
- PHP - 面向对象编程
- PHP - 类和对象
- PHP - 构造函数和析构函数
- PHP - 访问修饰符
- PHP - 继承
- PHP - 类常量
- PHP - 抽象类
- PHP - 接口
- PHP - 特性
- PHP - 静态方法
- PHP - 静态属性
- PHP - 命名空间
- PHP - 对象迭代
- PHP - 封装
- PHP - Final 关键字
- PHP - 重载
- PHP - 克隆对象
- PHP - 匿名类
- PHP Web 开发
- PHP - Web 概念
- PHP - 表单处理
- PHP - 表单验证
- PHP - 表单邮件/URL
- PHP - 完整表单
- PHP - 文件包含
- PHP - GET 和 POST
- PHP - 文件上传
- PHP - Cookie
- PHP - Session
- PHP - Session 选项
- PHP - 发送邮件
- PHP - 净化输入
- PHP - Post-Redirect-Get (PRG)
- PHP - 闪存消息
- PHP 高级
- PHP - MySQL
- PHP.INI 文件配置
- PHP - 数组解构
- PHP - 编码规范
- PHP - 正则表达式
- PHP - 错误处理
- PHP - Try…Catch
- PHP - Bug 调试
- PHP - 适用于 C 开发人员
- PHP - 适用于 PERL 开发人员
- PHP - 框架
- PHP - 核心 PHP 与框架
- PHP - 设计模式
- PHP - 过滤器
- PHP - JSON
- PHP - 异常
- PHP - 特殊类型
- PHP - 哈希
- PHP - 加密
- PHP - is_null() 函数
- PHP - 系统调用
- PHP - HTTP 认证
- PHP - 交换变量
- PHP - Closure::call()
- PHP - 过滤后的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 期望
- PHP - Use 语句
- PHP - 整数除法
- PHP - 已弃用的功能
- PHP - 已移除的扩展和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 进程
- PHP - PDO 扩展
- PHP - 内置函数
- PHP 有用资源
- PHP - 速查表
- PHP - 问答
- PHP - 快速指南
- PHP - 在线编译器
- PHP - 有用资源
- PHP - 讨论
PHP – JSON
PHP 的标准发行版默认启用了 JSON 支持。PHP 扩展实现了 JavaScript 对象表示法 (JSON) 数据交换格式。PHP 解析器中的 JSON 扩展处理 JSON 数据。
JSON(JavaScript 对象表示法)是一种轻量级、基于文本、与语言无关的数据交换格式。JSON 定义了一小组用于结构化数据的可移植表示的格式化规则。它是一种基于文本的数据格式,易于人类和机器读取。
PHP 5.2 及更高版本中的 JSON 扩展提供了一些预定义的常量、与 JSON 相关的函数,以及一个 JsonException 类。
PHP JSON 函数
PHP 具有以下 JSON 函数 -
json_encode()
此函数返回一个包含提供的值的 JSON 表示形式的字符串。如果参数是数组或对象,它将被递归序列化。
json_encode(mixed $value, int $flags = 0, int $depth = 512): string|false
json_decode()
此函数获取一个 JSON 编码的字符串并将其转换为 PHP 值。
json_decode( string $json, ?bool $associative = null, int $depth = 512, int $flags = 0 ): mixed
当此函数的关联参数为 true 时,JSON 对象将作为关联数组返回;当为 false 时,JSON 对象将作为对象返回。
编码/解码操作受提供的标志影响。预定义的常量及其整数值如下所示 -
预定义常量 | 值 |
---|---|
JSON_HEX_TAG | 1 |
JSON_HEX_AMP | 2 |
JSON_HEX_APOS | 4 |
JSON_HEX_QUOT | 8 |
JSON_FORCE_OBJECT | 16 |
JSON_NUMERIC_CHECK | 32 |
JSON_UNESCAPED_SLASHES | 64 |
JSON_PRETTY_PRINT | 128 |
JSON_UNESCAPED_UNICODE | 256 |
json_last_error_msg()
此函数返回上次 json_encode() 或 json_decode() 调用的错误字符串。
json_last_error_msg(): string
如果未发生错误,则返回“无错误”消息。
json_last_error()
此函数返回一个整数。
json_last_error(): int
该函数返回一个与以下常量之一对应的整数 -
序号 | 常量和含义 |
---|---|
1 | JSON_ERROR_NONE 未发生错误 |
2 | JSON_ERROR_DEPTH 已超出最大堆栈深度 |
3 | JSON_ERROR_STATE_MISMATCH 无效或格式错误的 JSON |
4 | JSON_ERROR_CTRL_CHAR 控制字符错误,可能是编码错误 |
5 | JSON_ERROR_SYNTAX 语法错误 |
6 | JSON_ERROR_UTF8 格式错误的 UTF-8 字符,可能是编码错误 |
7 | JSON_ERROR_RECURSION 要编码的值中存在一个或多个递归引用 |
8 | JSON_ERROR_INF_OR_NAN 要编码的值中存在一个或多个NAN 或INF 值 |
9 | JSON_ERROR_UNSUPPORTED_TYPE
给定了一个无法编码的类型的值 |
10 | JSON_ERROR_INVALID_PROPERTY_NAME 给定了一个无法编码的属性名称 |
11 | JSON_ERROR_UTF16 格式错误的 UTF-16 字符,可能是编码错误 |
示例
以下 PHP 代码将给定数组编码为 JSON 表示形式,并将 JSON 字符串解码回 PHP 数组。
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); $encoded = json_encode($arr); echo "The initial array: " . PHP_EOL; var_dump($arr); echo "Encoded JSON: $encoded" . PHP_EOL; $decoded = json_decode($encoded); echo "Array obtained after decoding: " . PHP_EOL; var_dump($decoded); ?>
它将产生以下输出 -
The initial array: array(5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) } Encoded JSON: {"a":1,"b":2,"c":3,"d":4,"e":5} Array obtained after decoding: object(stdClass)#1 (5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }