本篇主要介紹PHP Json解析,有興趣的朋友參考下,希望對大家有幫助。
對於JSON(JavaScript Object Notation)大家應該不陌生,它是一種輕量級的資料交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。它是基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999#的子集子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C , C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的資料交換語言。
JSON建構於兩個結構:
##“名稱/值”對的集合(A collection of name/value pairs)。在不同的語言中,它被理解為物件(object),紀錄(record),結構(struct),字典(dictionary),雜湊表(hash table),有鍵列表(keyed list),或關聯陣列 (associative array)。數值的有序列表(An ordered list of values)。在大部分語言中,它被理解為陣列(array)。
PHP的serialize是將變數序列化,回傳一個具有變數類型和結構的字串表達式,說起來兩者都是以一種字串的方式來體現一種資料結構,那它們之間有什麼區別呢。
先從JSON說起,看一個簡單的實例。
#
程式1:
var test = {"Name":"Peter","Age":20}; document.write(test.Name + ": " + test.Age);
顯示結果:
Peter: 20
#
##變數test中{"Name":"Peter","Age":20}為一個有2 個元素的物件(感覺就像PHP的陣列):Name為#Peter,Age為20。
當然也可以變得更複雜一點:
##程式2:var test = {"User":{"Name":"Peter","Age":20},"Company":"FORD"};
document.write(test.User.Name + ": " + test.Company);
#
Peter: FORD
#
User#元素中包含了Name和Age。
如果要體現多個User,則需要使用數組,區別於物件的"{}",陣列使用"[]"#。
程式3#:var test = [
{"User":{"Name":"Peter","Age":20},"Company":"FORD"},
{"User":{"Name":"Li Ming","Age":20},"Company":"Benz"}
];
document.write(test[1].User.Name + ": " + test[1].Company);
//或者使用:document.write(test[1]["User"]["Name"] + ": " + test[1]["Company"]);
顯示結果:
通过以上简单实例就能将一些复杂数据通过一个字符串来进行传递,再配合上Ajax的确是方便很多。 下面再来看看PHP的serialize函数的作用。 程序4: 显示结果: 这个结果看上去比JSON要复杂一些,其实也很简单,它说明的就是一些数据类型和结构。 以a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}为例: a:2说明这是个有两个元素的数组(array),s:7:"Country";s:3:"USA";为第一个元素,s:7说明这是有7个字符的字符串(string),后面i:20;也应该猜得到是整数(integer)20。 再来看一下这个例子: 程序5: 显示结果: 从这个例子中可以看出来,serialize对数据的类型和结构都进行的保存,unserialize后的变量仍然可以使用add()方法。 那么PHP和JSON有没有联系呢,熟悉PHP的朋友应该了解PHP5.2.0已经将JSON extension设置为默认组件,也就是说我们可以在PHP中进行JSON操作,其函数为json_encode和json_decode。 程序6: 显示结果: 这个结果和例一中test值是一样的,通过json_encode将PHP中的变量转换为JSON字符出表达式。 再来看看json_decode的用法。 程序7: 显示结果: 这的确验证了,在JSON中{"Name":"Peter","Age":20}是一个对象,但是在PHP中也可以将其转为数组,在json_decode中将ASSOC参数设置为True即可。 程序8: 显示结果: 另,需要注意的是JSON是基于Unicode格式,所以要进行中文操作要将其转化为UTF-8格式。 通过上面这些例子相信大家对于JSON和PHP的serialize、json_encode都有了初步了解,结合PHP、Javascript、JSON以及Ajax就可以完成强大的数据交互功能。 相关推荐:Li Ming: Benz
$arr = array
(
'Peter'=> array
(
'Country'=>'USA',
'Age'=>20
),
'Li Ming'=> array
(
'Country'=>'CHINA',
'Age'=>21
)
);
$serialize_var = serialize($arr);
echo $serialize_var;
a:2:{s:5:"Peter";a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}s:7:"Li Ming";a:2:
{s:7:"Country";s:5:"CHINA";s:3:"Age";i:21;}}
class test
{
var $var = 0;
function add(){
echo $var+10;
}
}
$unserialize_var = new test;
$serialize_var = serialize($unserialize_var);
echo $serialize_var;
$unserialize_var = null;
$unserialize_var = unserialize($serialize_var);
$unserialize_var->add();
O:4:"test":1:{s:3:"var";i:0;}
10
$arr = array
(
'Name'=>'Peter',
'Age'=>20
);
$jsonencode = json_encode($arr);
echo $jsonencode;
{"Name":"Peter","Age":20}
$var = '{"Name":"Peter","Age":20}';
$jsondecode = json_decode($var);
print_r($jsondecode);
stdClass Object ( [Name] => Peter [Age] => 20 )
$var = '{"Name":"Peter","Age":20}';
$jsondecode = json_decode($var,true);
print_r($jsondecode);
Array ( [Name] => Peter [Age] => 20 )
以上是PHP Json解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。