首頁 >後端開發 >PHP問題 >php如何將JSON資料轉換成陣列對象

php如何將JSON資料轉換成陣列對象

PHPz
PHPz原創
2023-04-23 09:08:33491瀏覽

在開發過程中,我們常常會牽涉到將 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中文網其他相關文章!

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