在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格式的字串轉換成陣列:
<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格式的字串轉換成陣列:
<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中文網其他相關文章!