在介紹這兩個函數之前,我還是想說json。不知道大家對json了解多少,感覺自己接觸php一段時間後,就已經對json有些印象,但僅僅是印象而已,我只知道它是一種資料類型,比較輕量。但是對於它的結構,我真的是模糊不清,直到現在使用它,我才了解到,所以:實踐是檢驗你是否獲得真知的一種非常有效的方法。
一:首先是json_encode(),意思是將資料轉換為json格式,那麼什麼型別資料可以轉換成json格式呢
1.物件。
定義一個class,new一個對象,可以將物件轉換為json格式
<?php class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e); ?>
結果
{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
2.陣列。
定義一個鍵值對數組
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
結果
{"a":1,"b":2,"c":3,"d":4,"e":5}
我們可以知道都是轉為了json格式數據,其實重點不在於結果相同,因為都是轉為json麼。 。我們要知道的是可以轉為json格式的資料型別是物件和鍵值對數組
二:其次是json_decode()。 對 JSON 格式的字串進行解碼,並轉換為 PHP 變數。
先上程式碼
列印結果
object(stdClass)#1 (5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) } array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }
這裡我們很顯然的看出第一個列印結果是一個對象,第二個是一個鍵值對數組。
這樣我們可以很好的解釋json_decode()的第二個參數:
當為true時:傳回數組;當為false(預設為false)時:傳回物件。
相關推薦:
#以上是php中的json_encode()和json_decode()函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!