实例详解PHP serialize与JSON解析_PHP教程
JSON基于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说起,看一个简单的实例。
例一:
<ol class="dp-c"> <li class="alt"><span><span class="keyword"><strong><font color="#006699">var</font></strong></span><span> test = {</span><span class="string"><font color="#0000ff">"Name"</font></span><span>:</span><span class="string"><font color="#0000ff">"Peter"</font></span><span>,</span><span class="string"><font color="#0000ff">"Age"</font></span><span>:20}; </span></span></li> <li> <span>document.write(test.Name + </span><span class="string"><font color="#0000ff">": "</font></span><span> + test.Age); </span> </li> </ol>
显示结果:
Peter: 20
变量test中{"Name":"Peter","Age":20}为一个有2个元素的对象(感觉就像PHP的数组):
Name为Peter,Age为20。
当然也可以变得复杂些。
例二:
<ol class="dp-xml"> <li class="alt"><span><span>var </span><span class="attribute"><font color="#ff0000">test</font></span><span> = {"User":{"Name":"Peter","Age":20},"Company":"FORD"}; </span></span></li> <li><span>document.write(test.User.Name + ": " + test.Company); </span></li> </ol>
显示结果:
Peter: FORD这个例子中User元素中包含了Name和Age。
如果要体现多个User,则需要使用数组,区别于对象的"{}",数组使用"[]"。
JSON解析例三:
<ol class="dp-xml"> <li class="alt"><span><span>var </span><span class="attribute"><font color="#ff0000">test</font></span><span> = [ </span></span></li> <li><span> {"User":{"Name":"Peter","Age":20},"Company":"FORD"}, </span></li> <li class="alt"><span> {"User":{"Name":"Li Ming","Age":20},"Company":"Benz"} </span></li> <li><span> ]; </span></li> <li class="alt"><span>document.write(test[1].User.Name + ": " + test[1].Company); </span></li> <li><span>//或者使用:document.write(test[1]["User"]["Name"] + ": " + test[1]["Company"]); </span></li> </ol>
JSON解析显示结果:
Li Ming: Benz
通过以上简单实例就能将一些复杂数据通过一个字符串来进行传递,再配合上Ajax的确是方便很多。
下面再来看看PHP的serialize函数的作用。
JSON解析例四:
<ol class="dp-xml"> <li class="alt"><span><span>$</span><span class="attribute"><font color="#ff0000">arr</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">array</font></span><span> </span></span></li> <li><span> ( </span></li> <li class="alt"> <span> 'Peter'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array </span> </li> <li><span> ( </span></li> <li class="alt"> <span> 'Country'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>'USA', </span> </li> <li> <span> 'Age'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>20 </span> </li> <li class="alt"><span> ), </span></li> <li> <span> 'Li Ming'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array </span> </li> <li class="alt"><span> ( </span></li> <li> <span> 'Country'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>'CHINA', </span> </li> <li class="alt"> <span> 'Age'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>21 </span> </li> <li><span> ) </span></li> <li class="alt"><span> ); </span></li> <li><span> </span></li> <li class="alt"> <span>$</span><span class="attribute-value"><font color="#0000ff">serialize</font></span><span class="attribute"><font color="#ff0000">serialize_var</font></span><span> = serialize($arr); </span> </li> <li><span>echo $serialize_var; </span></li> </ol>
JSON解析显示结果:
<ol class="dp-xml"><li class="alt"><span><span>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;}} </span></span></li></ol>
这个结果看上去比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。
再来看一下这个例子,
例五:
<ol class="dp-c"> <li class="alt"><span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span> test </span></span></li> <li><span>{ </span></li> <li class="alt"> <span> </span><span class="keyword"><strong><font color="#006699">var</font></strong></span><span> </span><span class="vars"><font color="#dd0000">$var</font></span><span> = 0; </span> </li> <li> <span> </span><span class="keyword"><strong><font color="#006699">function</font></strong></span><span> add(){ </span> </li> <li class="alt"> <span> </span><span class="func">echo</span><span> </span><span class="vars"><font color="#dd0000">$var</font></span><span>+10; </span> </li> <li><span> } </span></li> <li class="alt"><span>} </span></li> <li><span> </span></li> <li class="alt"> <span></span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span> = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> test; </span> </li> <li> <span></span><span class="vars"><font color="#dd0000">$serialize_var</font></span><span> = serialize(</span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span>); </span> </li> <li class="alt"> <span></span><span class="func">echo</span><span> </span><span class="vars"><font color="#dd0000">$serialize_var</font></span><span>; </span> </li> <li> <span></span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span> = null; </span> </li> <li class="alt"> <span></span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span> = unserialize(</span><span class="vars"><font color="#dd0000">$serialize_var</font></span><span>); </span> </li> <li> <span></span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span>->add(); </span> </li> </ol>
显示结果:
O:4:"test":1:{s:3:"var";i:0;}
10
从这个例子中可以看出来,serialize对数据的类型和结构都进行的保存,
unserialize后的变量仍然可以使用add()方法。
那么PHP和JSON有没有联系呢,熟悉PHP的朋友应该了解PHP5.2.0已经将JSON extension设置为默认组件,也就是说我们可以在PHP中进行JSON操作,其函数为json_encode和json_decode。
例六:
<ol class="dp-c"> <li class="alt"><span><span class="vars"><font color="#dd0000">$arr</font></span><span> = </span><span class="keyword"><strong><font color="#006699">array</font></strong></span><span> </span></span></li> <li><span> ( </span></li> <li class="alt"> <span> </span><span class="string"><font color="#0000ff">'Name'</font></span><span>=></span><span class="string"><font color="#0000ff">'Peter'</font></span><span>, </span> </li> <li> <span> </span><span class="string"><font color="#0000ff">'Age'</font></span><span>=>20 </span> </li> <li class="alt"><span> ); </span></li> <li><span> </span></li> <li class="alt"> <span></span><span class="vars"><font color="#dd0000">$jsonencode</font></span><span> = json_encode(</span><span class="vars"><font color="#dd0000">$arr</font></span><span>); </span> </li> <li> <span></span><span class="func">echo</span><span> </span><span class="vars"><font color="#dd0000">$jsonencode</font></span><span>; </span> </li> </ol>
显示结果:
{"Name":"Peter","Age":20}
这个结果和例一中test值是一样的,通过json_encode将PHP中的变量转换为JSON字符出表达式。
再来看看json_decode的用法。
例七:
<ol class="dp-c"> <li class="alt"><span><span class="vars"><font color="#dd0000">$var</font></span><span> = </span><span class="string"><font color="#0000ff">'{"Name":"Peter","Age":20}'</font></span><span>; </span></span></li> <li> <span></span><span class="vars"><font color="#dd0000">$jsondecode</font></span><span> = json_decode(</span><span class="vars"><font color="#dd0000">$var</font></span><span>); </span> </li> <li class="alt"> <span>print_r(</span><span class="vars"><font color="#dd0000">$jsondecode</font></span><span>); </span> </li> </ol>
显示结果:
<ol class="dp-c"><li class="alt"><span><span>stdClass Object ( [Name] => Peter [Age] => 20 ) </span></span></li></ol>
这的确验证了,在JSON中{"Name":"Peter","Age":20}是一个对象,但是在PHP中也可以将其转为数组,在json_decode中将ASSOC参数设置为True即可。
例八:
<ol class="dp-c"> <li class="alt"><span><span class="vars"><font color="#dd0000">$var</font></span><span> = </span><span class="string"><font color="#0000ff">'{"Name":"Peter","Age":20}'</font></span><span>; </span></span></li> <li> <span></span><span class="vars"><font color="#dd0000">$jsondecode</font></span><span> = json_decode(</span><span class="vars"><font color="#dd0000">$var</font></span><span>,true); </span> </li> <li class="alt"> <span>print_r(</span><span class="vars"><font color="#dd0000">$jsondecode</font></span><span>); </span> </li> </ol>
显示结果:
<ol class="dp-c"><li class="alt"><span><span>Array ( [Name] => Peter [Age] => 20 ) </span></span></li></ol>
另,需要注意的是JSON是基于Unicode格式,所以要进行中文操作要将其转化为UTF-8格式。通过上面这些例子相信大家对于JSON和PHP的serialize、json_encode都有了初步了解,结合PHP、Javascript、JSON以及Ajax就可以完成强大的数据交互功能。

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP는 죽지 않고 끊임없이 적응하고 진화합니다. 1) PHP는 1994 년부터 새로운 기술 트렌드에 적응하기 위해 여러 버전 반복을 겪었습니다. 2) 현재 전자 상거래, 컨텐츠 관리 시스템 및 기타 분야에서 널리 사용됩니다. 3) PHP8은 성능과 현대화를 개선하기 위해 JIT 컴파일러 및 기타 기능을 소개합니다. 4) Opcache를 사용하고 PSR-12 표준을 따라 성능 및 코드 품질을 최적화하십시오.

PHP의 미래는 새로운 기술 트렌드에 적응하고 혁신적인 기능을 도입함으로써 달성 될 것입니다. 1) 클라우드 컴퓨팅, 컨테이너화 및 마이크로 서비스 아키텍처에 적응, Docker 및 Kubernetes 지원; 2) 성능 및 데이터 처리 효율을 향상시키기 위해 JIT 컴파일러 및 열거 유형을 도입합니다. 3) 지속적으로 성능을 최적화하고 모범 사례를 홍보합니다.

PHP에서, 특성은 방법 재사용이 필요하지만 상속에 적합하지 않은 상황에 적합합니다. 1) 특성은 클래스에서 다중 상속의 복잡성을 피할 수 있도록 수많은 방법을 허용합니다. 2) 특성을 사용할 때는 대안과 키워드를 통해 해결할 수있는 방법 충돌에주의를 기울여야합니다. 3) 성능을 최적화하고 코드 유지 보수성을 향상시키기 위해 특성을 과도하게 사용해야하며 단일 책임을 유지해야합니다.

의존성 주입 컨테이너 (DIC)는 PHP 프로젝트에 사용하기위한 객체 종속성을 관리하고 제공하는 도구입니다. DIC의 주요 이점에는 다음이 포함됩니다. 1. 디커플링, 구성 요소 독립적 인 코드는 유지 관리 및 테스트가 쉽습니다. 2. 유연성, 의존성을 교체 또는 수정하기 쉽습니다. 3. 테스트 가능성, 단위 테스트를 위해 모의 객체를 주입하기에 편리합니다.

SplfixedArray는 PHP의 고정 크기 배열로, 고성능 및 메모리 사용이 필요한 시나리오에 적합합니다. 1) 동적 조정으로 인한 오버 헤드를 피하기 위해 생성 할 때 크기를 지정해야합니다. 2) C 언어 배열을 기반으로 메모리 및 빠른 액세스 속도를 직접 작동합니다. 3) 대규모 데이터 처리 및 메모리에 민감한 환경에 적합하지만 크기가 고정되어 있으므로주의해서 사용해야합니다.

PHP는 $ \ _ 파일 변수를 통해 파일 업로드를 처리합니다. 보안을 보장하는 방법에는 다음이 포함됩니다. 1. 오류 확인 확인, 2. 파일 유형 및 크기 확인, 3 파일 덮어 쓰기 방지, 4. 파일을 영구 저장소 위치로 이동하십시오.

JavaScript에서는 NullCoalescingOperator (??) 및 NullCoalescingAssignmentOperator (?? =)를 사용할 수 있습니다. 1. 2. ??= 변수를 오른쪽 피연산자의 값에 할당하지만 변수가 무효 또는 정의되지 않은 경우에만. 이 연산자는 코드 로직을 단순화하고 가독성과 성능을 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Dreamweaver Mac版
시각적 웹 개발 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
