首頁 後端開發 PHP問題 php json怎麼轉換成陣列

php json怎麼轉換成陣列

Apr 25, 2023 am 09:02 AM

隨著網路的發展和技術的進步,前後端分離已經成為了一種常見的架構方式。這種架構方式的優點在於:前端和後端可以分別開發,開發效率更高;前端可以更靈活地實現頁面,提升使用者體驗;後端可以更專注於資料處理和業務邏輯。但是在前後端分離的開發過程中,前後端資料傳遞的問題就變得更加重要了。通常我們會選擇使用 JSON 格式進行資料傳輸,而伺服器端要將 JSON 字串轉換成數組,PHP 提供了許多函數可以實現這個功能。

  1. json_decode()

json_decode() 是PHP 內建的函數之一,它可以將JSON 格式的字串轉換為PHP 陣列或對象。這個函數接受兩個參數:第一個是要被解碼的 JSON 字串,第二個參數是一個布林類型的可選參數,用於指定返回值是否轉換為關聯數組。當第二個參數為 false 時(預設值),json_decode() 函數將傳回一個對象,當第二個參數為 true 時,函數將傳回一個關聯數組。

程式碼範例:

1

2

3

4

5

6

7

8

9

10

$json_str '{"name": "Tom", "age": 18}';

// 将 JSON 字符串解码成对象

$obj = json_decode($json_str);

echo $obj->name;  // 输出 "Tom"

echo $obj->age;   // 输出 "18"

 

// 将 JSON 字符串解码成关联数组

$arr = json_decode($json_str, true);

echo $arr['name'];  // 输出 "Tom"

echo $arr['age'];   // 输出 "18"

登入後複製
  1. json_decode() file_get_contents()

如果JSON 資料是從檔案讀取的,我們也可以利用PHP內建的file_get_contents() 函數讀取檔案內容,再用json_decode() 函數將JSON 資料轉換成陣列。程式碼範例:

1

2

3

4

$json_file 'test.json';

// 读取文件内容

$json_str file_get_contents($json_file);

$arr = json_decode($json_str, true);

登入後複製
  1. json_decode() cURL

如果JSON 資料是透過API 取得的,我們可以使用PHP 內建的cURL 函式庫取得數據,並用 json_decode() 函數將JSON 資料轉換成陣列。程式碼範例:

1

2

3

4

5

6

7

8

9

10

11

$url 'https://api.example.com/get_data';

// 初始化 cURL

$ch = curl_init();

// 设置 URL 和其他 cURL 选项

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 发送请求并处理响应

$response = curl_exec($ch);

$arr = json_decode($response, true);

// 关闭 cURL

curl_close($ch);

登入後複製
  1. 使用第三方函式庫

除了PHP 內建的json_decode() 函數,我們也可以使用第三方函式庫來實現將JSON 資料轉換成數組的功能。常見的第三方函式庫有:

  • symfony/yaml:Symfony YAML 元件提供了 YAML 和 JSON 之間的相互轉換功能。雖然其主要目的是為 YAML 檔案提供設定選項,但它實際上也可以將 JSON 轉換為陣列。
  • seld/jsonlint:seld/jsonlint 是 JSON 解析器,可以將 JSON 轉換為數組,並進行語法檢查。

這裡以 symfony/yaml 為例,介紹如何使用第三方元件將 JSON 資料轉換為陣列。首先需要透過Composer 安裝相關元件:

1

composer require symfony/yaml

登入後複製

然後在程式碼中使用Symfony\Component\Yaml\Yaml::parse() 方法將JSON 資料轉換成陣列:

1

2

3

4

5

6

7

8

use Symfony\Component\Yaml\Yaml;

 

$json_str '{"name": "Tom", "age": 18}';

 

// 将 JSON 字符串转换成数组

$arr = Yaml::parse($json_str);

echo $arr['name'];  // 输出 "Tom"

echo $arr['age'];   // 输出 "18"

登入後複製

總結

以上就是將JSON 資料轉換成陣列的幾種方法,其中json_decode() 是最常用的。除此之外,我們還可以使用第三方元件進行轉換,具體使用哪種方法可以根據實際情況和需求來選擇。無論使用哪種方法,我們都應該注意 JSON 資料的格式是否正確,在出現異常時應該進行相應的處理。

以上是php json怎麼轉換成陣列的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP數組去重有哪些最佳實踐 PHP數組去重有哪些最佳實踐 Mar 03, 2025 pm 04:41 PM

PHP數組去重有哪些最佳實踐

PHP數組去重可以利用鍵名唯一性嗎 PHP數組去重可以利用鍵名唯一性嗎 Mar 03, 2025 pm 04:51 PM

PHP數組去重可以利用鍵名唯一性嗎

PHP數組去重需要考慮性能損耗嗎 PHP數組去重需要考慮性能損耗嗎 Mar 03, 2025 pm 04:47 PM

PHP數組去重需要考慮性能損耗嗎

最新的PHP編碼標準和最佳實踐是什麼? 最新的PHP編碼標準和最佳實踐是什麼? Mar 10, 2025 pm 06:16 PM

最新的PHP編碼標準和最佳實踐是什麼?

PHP數組去重有哪些優化技巧 PHP數組去重有哪些優化技巧 Mar 03, 2025 pm 04:50 PM

PHP數組去重有哪些優化技巧

如何在PHP中實現消息隊列(RabbitMQ,REDIS)? 如何在PHP中實現消息隊列(RabbitMQ,REDIS)? Mar 10, 2025 pm 06:15 PM

如何在PHP中實現消息隊列(RabbitMQ,REDIS)?

我如何處理PHP擴展和PECL? 我如何處理PHP擴展和PECL? Mar 10, 2025 pm 06:12 PM

我如何處理PHP擴展和PECL?

如何使用反射來分析和操縱PHP代碼? 如何使用反射來分析和操縱PHP代碼? Mar 10, 2025 pm 06:12 PM

如何使用反射來分析和操縱PHP代碼?

See all articles