首頁 >後端開發 >PHP問題 >把json字串轉成陣列 php

把json字串轉成陣列 php

PHPz
PHPz原創
2023-04-23 09:17:15211瀏覽

在PHP中,從JSON格式的字串轉換成陣列是一個非常簡單的過程。有兩個PHP內建的函數可以用於此目的:json_decode()和json_decode_object()。

1.使用json_decode()函數

json_decode()函數是將JSON格式的字串轉換成PHP陣列的常見方式。

語法:

<code>mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )</code>

其中:

  • $json:需要解析的json字串;
  • $assoc:是否將傳回的對象轉換為關聯數組,值為TRUE則轉為關聯數組,預設不轉換;
  • $depth:設定遞歸的深度,預設為512,為了避免記憶體溢出,可以根據實際情況調整該值;
  • $options:可選參數,可以指定解析JSON的選項。

範例:

將JSON格式的字串轉換成陣列:

<code><?php
$json_string = '{"name": "Tom", "age": 30, "sex": "male"}';
$decoded_json = json_decode($json_string);
print_r($decoded_json);
?></code>

輸出:

<code>stdClass Object
(
   [name] => Tom
   [age] => 30
   [sex] => male
)</code>

上面的程式碼中,我們首先定義了一個JSON格式的字串,然後呼叫json_decode()函數將該字串轉換成PHP陣列$decoded_json,並列印出結果。

如果要將回傳結果轉換為關聯數組,則需要將$assoc參數設定為TRUE:

<code><?php
$json_string = '{"name": "Tom", "age": 30, "sex": "male"}';
$decoded_json = json_decode($json_string, true);
print_r($decoded_json);
?></code>

輸出:

<code>Array
(
   [name] => Tom
   [age] => 30
   [sex] => male
)</code>

從上面的輸出可以看到,數組$decoded_json與上一次輸出的物件不同,這是因為此時$assoc被設定為TRUE,並將其轉換為關聯數組。如果不設定$assoc,它預設回傳物件而不是陣列。

2.使用json_decode_object()函數

除了json_decode()函數之外,PHP還提供了另一種將JSON格式的字串轉換成PHP陣列的方式,這就是json_decode_object ()函數。

語法:

<code>object json_decode_object ( string $json_string [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )</code>

其中:

  • $json_string:需要解析的json字串;
  • $assoc:是否將傳回的對象轉換為關聯數組,值為TRUE則轉為關聯數組,預設不轉換;
  • $depth:設定遞歸的深度,預設為512,為了避免記憶體溢出,可以根據實際情況調整該值;
  • $options:可選參數,可以指定解析JSON的選項。

範例:

將JSON格式的字串轉換成陣列:

<code><?php
$json_string = '{"name": "Tom", "age": 30, "sex": "male"}';
$decoded_json = json_decode_object($json_string);
print_r($decoded_json);
?></code>

輸出:

<code>stdClass Object
(
   [name] => Tom
   [age] => 30
   [sex] => male
)</code>

上面的程式碼中,我們使用json_decode_object()函數將JSON字串轉換成PHP陣列$decoded_json。由於我們沒有設定$assoc參數,因此它預設回傳物件而不是陣列。

總結

在PHP中,我們可以使用json_decode()函數和json_decode_object()函數將JSON格式的字串轉換成PHP陣列。這兩個函數各有優點,選擇哪一個取決於您的特定需求。如果您希望結果為對象,那麼使用json_decode_object(),如果您希望結果為數組,那麼請使用json_decode()。在使用過程中,還需要根據實際情況調整$depth和$options參數的值,以避免記憶體溢位。

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

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