
- 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) }