在開發過程中,我們常常會牽涉到將 JSON 資料轉換成陣列或物件陣列的場景。 PHP 作為一門流行的伺服器端程式語言,在處理 JSON 資料時也提供了便捷的方法來進行轉換操作。本文以實例示範如何將 JSON 資料轉換成陣列物件陣列。
前置知識
在講解具體操作前,需要先了解一些基本的 PHP 知識。
JSON
JSON(JavaScript Object Notation 的縮寫)是一種輕量級的資料交換格式。它將資料表示為鍵值對或數組格式。 JSON 資料可以使用 JavaScript 中的 object 和 array 來表示。
PHP 中的 Array
在 PHP 中,陣列是收集資料的結構。它可以儲存不同類型的值,在陣列中,每個值都有一個與之相關聯的鍵(key),而鍵可以是任何字串或整數。
PHP 中的stdClass 物件
stdClass 物件是PHP 中非常簡單的物件模型,它可以根據需要動態分配屬性,此外還可以將物件轉換成數組,也可以將數組轉換成對象,這對於處理JSON 資料非常有用。
Json 轉換成陣列
我們先來看看如何將 JSON 資料轉換成 PHP 陣列。 PHP 中提供了一個內建的函數 json_decode(),它可以將 JSON 字串轉換成 PHP 陣列。此函數的用法如下:
mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
其中,$json 表示需要轉換的JSON 字串;$assoc 表示是否傳回關聯陣列(預設為false,即傳回物件);$depth 表示最大遞歸深度(預設是512);$options 表示轉換選項(預設是0)。
下面是一個簡單的範例,假設我們有一個包含JSON 資料的檔案data.json
:
{ "name": "Typechoer", "age": 25, "gender": "male", "skills": ["PHP", "JavaScript", "CSS"] }
我們可以使用以下程式碼讀取JSON 資料並將其轉換為PHP 陣列:
$json = file_get_contents('data.json'); $data = json_decode($json, true); print_r($data);
輸出結果如下:
Array ( [name] => Typechoer [age] => 25 [gender] => male [skills] => Array ( [0] => PHP [1] => JavaScript [2] => CSS ) )
#可以看到,我們實作了將JSON 資料轉換成PHP 陣列的操作,資料的類型保持不變。
Json 轉換成物件數組
除了將 JSON 資料轉換成 PHP 數組,還可以將其轉換成物件數組。物件數組是由 stdClass 物件組成的數組,其中每個物件都代表一個元素。我們不需要關心物件的欄位名,只需透過物件的屬性進行存取即可。以下是將JSON 資料轉換成PHP 物件陣列的方法:
json_decode(string, false, 512, JSON_OBJECT_AS_ARRAY);
可以看到,我們只需要將$assoc 參數設為false,並將$options 參數設為JSON_OBJECT_AS_ARRAY,然後使用json_decode() 函數進行轉換操作即可。
同樣基於上述的JSON 數據,我們可以使用以下程式碼將其轉換成PHP 物件數組:
$json = file_get_contents('data.json'); $data = json_decode($json, false, 512, JSON_OBJECT_AS_ARRAY); print_r($data);
輸出結果如下:
Array ( [name] => Typechoer [age] => 25 [gender] => male [skills] => Array ( [0] => PHP [1] => JavaScript [2] => CSS ) )
由於使用的是物件數組,因此我們可以使用物件屬性來存取數據,例如:
echo $data[0]->name; // Typechoer echo $data[0]->skills[2]; // CSS
Json 轉換成多維數組
如果JSON 資料中嵌套了子物件或數組,那麼轉換成PHP 數組或對象數組時,我們依然可以維持資料的多維度特性。
以下是一個巢狀結構的JSON 資料範例:
{ "account": { "name": "Tom", "age": 28 }, "courses": [ { "name": "PHP", "hour": 80 }, { "name": "JavaScript", "hour": 60 } ] }
我們可以使用以下程式碼將其轉換成PHP 陣列:
$json = file_get_contents('data.json'); $data = json_decode($json, true); print_r($data);
輸出結果如下:
Array ( [account] => Array ( [name] => Tom [age] => 28 ) [courses] => Array ( [0] => Array ( [name] => PHP [hour] => 80 ) [1] => Array ( [name] => JavaScript [hour] => 60 ) ) )
同樣,我們也可以將其轉換成PHP 物件數組:
$json = file_get_contents('data.json'); $data = json_decode($json, false, 512, JSON_OBJECT_AS_ARRAY); print_r($data);
#輸出結果如下:
Array ( [account] => Array ( [name] => Tom [age] => 28 ) [courses] => Array ( [0] => Array ( [name] => PHP [hour] => 80 ) [1] => Array ( [name] => JavaScript [hour] => 60 ) ) )
可以看到,多維資料的結構得到了保留。
總結
本文中,我們介紹如何將 JSON 資料轉換成 PHP 陣列或物件陣列。使用 PHP 內建的函數 json_decode(),我們可以快速地實作 JSON 資料和 PHP 資料之間的轉換,如果你在開發中需要與 JSON 資料打交道,那麼這些知識一定會對你有所幫助。
以上是php如何將JSON資料轉換成陣列對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),