如何在 PHP 中從 JSON 中提取資料

Minahil Noor 2020年10月15日
如何在 PHP 中從 JSON 中提取資料

在本文中,我們將介紹在 PHP 中從 JSON 中提取資料的方法。

  • 使用 json_decode() 函式

在 PHP 中使用 json_decode() 函式從 JSON 中提取資料

我們將使用內建函式 json_decode() 從 JSON 中提取資料。我們將把 JSON 中的字串轉換為一個物件或陣列來提取資料。使用該函式的正確語法如下。

json_decode($jsonString, $assoc, $depth, $options);

內建函式 json_decode() 有四個引數。其引數的詳細資訊如下:

引數 說明
$jsonString 強制 它是 JSON 編碼的字串,我們要從中提取資料。
$assoc 可選 它是一個布林變數,如果它為 true,函式將返回一個關聯陣列。如果為 TRUE,函式將返回一個關聯陣列,如果為 FALSE,函式將返回物件。如果為 FALSE,函式將返回物件。
$depth 可選 它是一個整數。它告訴我們指定的深度。
$options 可選 它指定了 JSON_BIGINT_AS_STRING, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_OBJECT_AS_ARRAY, JSON_THROW_ON_ERROR 的位碼。你可以檢視它們的詳細資訊這裡

如果 JSON 字串的格式不正確,該函式返回 NULL。它根據 $assoc 引數返回一個關聯的陣列或物件。

下面的程式顯示了我們如何使用 json_decode() 函式從 JSON 字串中提取資料。

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth":
    {
        "year":"1999",
        "month":"06",
        "day":"19"
    }
}';
$data = json_decode($jsonString);
echo("The data is: \n");
var_dump($data);
?> 
    

由於我們沒有傳遞 $assoc 引數,函式將返回一個物件。

輸出:

The data is: 
object(stdClass)#1 (3) {
  ["firstName"]=>
  string(6) "Olivia"
  ["lastName"]=>
  string(5) "Mason"
  ["dateOfBirth"]=>
  object(stdClass)#2 (3) {
    ["year"]=>
    string(4) "1999"
    ["month"]=>
    string(2) "06"
    ["day"]=>
    string(2) "19"
  }
}

如果我們傳遞了 $assoc 引數,函式將返回一個關聯陣列。

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth":
    {
        "year":"1999",
        "month":"06",
        "day":"19"
    }
}';
$data = json_decode($jsonString, true);
echo("The data is: \n");
var_dump($data);
?> 

輸出:

The data is: 
array(3) {
  ["firstName"]=>
  string(6) "Olivia"
  ["lastName"]=>
  string(5) "Mason"
  ["dateOfBirth"]=>
  array(3) {
    ["year"]=>
    string(4) "1999"
    ["month"]=>
    string(2) "06"
    ["day"]=>
    string(2) "19"
  }
}

如果函式返回了一個物件,我們可以通過以下方式訪問資料。

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth":
    {
        "year":"1999",
        "month":"06",
        "day":"19"
    }
}';
$data = json_decode($jsonString);
echo("The first name is: \n");
echo $data->firstName;
?> 

該函式將從提取的資料中返回名字。

輸出:

The first name is: 
Olivia

如果函式返回的是一個陣列,我們可以用以下方式直接訪問資料。

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth":
    {
        "year":"1999",
        "month":"06",
        "day":"19"
    }
}';
$data = json_decode($jsonString, true);
echo("The first name is: \n");
echo $data['firstName'];
?> 

該函式將從提取的資料中返回名字。

輸出:

The first name is: 
Olivia

我們還可以遍歷陣列。

<?php 
$jsonString ='{
    "firstName":"Olivia",
    "lastName":"Mason",
    "dateOfBirth": "19-09-1999"
}';
$data = json_decode($jsonString, true);
foreach ($data as $key=> $data1) {
    echo $key, " : ";
    echo $data1, "\n";
}
?> 

函式將返回提取的資料。

輸出:

firstName : Olivia
lastName : Mason
dateOfBirth : 19-09-1999

相關文章 - PHP JSON