在現代Web開發中,基於JavaScript的前端程式使用JSON(JavaScript Object Notation)格式資料已成為常規選擇。而 PHP 則是一種常見的伺服器端程式語言。常常我們需要在伺服器端將PHP物件或陣列轉換為JSON格式字串,以方便前端呼叫。在本文中,將介紹如何在 PHP 中將物件陣列轉換為 JSON 字串陣列。
PHP中內建了json_encode()函數,該函數可以將PHP 的陣列和物件轉換為JSON 格式字串,如下所顯示:
<?php $array = array('name' => '张三', 'age' => 18, 'gender' => 'male'); echo json_encode($array); ?>
運行結果:
{"name":"张三","age":18,"gender":"male"}
在這個範例中我們可以看到,當將PHP陣列傳入json_encode()函數時能夠傳回一個已編碼的JSON格式字串。這裡要注意:json_encode()函數只支援UTF-8編碼格式,如果你的字串所使用的編碼格式不是UTF-8則會發生錯誤。因此,在使用json_encode()函數之前,請確保需要轉換的陣列或物件已轉換為 UTF-8 格式。
如果需要將物件數組轉換為JSON 字串數組,則需要將物件轉換為數組,並使用json_encode()函數進行處理。舉例來說,我們需要將表示學生資訊的物件陣列轉換為JSON 格式字串陣列:
<?php class Student{ public $name; public $age; public $gender; } $student1 = new Student(); $student1->name = '张三'; $student1->age = 18; $student1->gender = 'male'; $student2 = new Student(); $student2->name = '李四'; $student2->age = 19; $student2->gender = 'female'; $students = array(); array_push($students,$student1,$student2); $students_arr = array(); foreach($students as $student){ $obj = get_object_vars($student); array_push($students_arr,$obj); } echo json_encode($students_arr); ?>
運行結果:
[{"name":"张三","age":18,"gender":"male"},{"name":"李四","age":19,"gender":"female"}]
在上面的範例中,我們建立了一個可以表示學生資訊的Student 類,並用陣列儲存多個Student 物件。在將 Student 物件轉換為陣列時,使用了 get_object_vars() 函數。這個函數可以將物件轉換為一個關聯數組,使我們可以像處理數組一樣處理物件。最後將陣列傳給json_encode()函數,將結果輸出即可。
同時,為了更好的輔助理解,我們也可以將上述範例轉換為更直覺的形式,如下圖所示:
透過上面的兩個例子,您已經了解到如何將PHP物件或陣列轉換為JSON格式字串陣列。但是,乍看之下這些JSON格式字串陣列看起來有些難以閱讀。為了美化JSON 資料格式,你可以使用json_encode()函數的第二個參數:JSON_PRETTY_PRINT選擇,如下所示:
<?php $array = array('name' => '张三', 'age' => 18, 'gender' => 'male'); echo json_encode($array,JSON_PRETTY_PRINT); ?>
運行結果:
{ "name": "张三", "age": 18, "gender": "male" }
這就是使用JSON_PRETTY_PRINT選項後的輸出結果,更清晰易讀。
在這篇文章中,我們介紹如何在 PHP 中將物件陣列轉換為 JSON 字串陣列。這是我們進行前後端互動的重要一步,再結合前端的 JSON 解析工具,能夠輕易地將資料轉換為各個網站所需的格式。
以上是php物件數組怎麼轉換為json字串數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!