如何在 PHP 中從 JSON 中提取資料
Minahil Noor
2020年10月15日
在本文中,我們將介紹在 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