十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在PHP中解析JSON主要用到json_encode和json_decode两个PHP
创新互联专注于凤泉网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供凤泉营销型网站建设,凤泉网站制作、凤泉网页设计、凤泉网站官网定制、小程序定制开发服务,打造凤泉网络公司原创品牌,更为您提供凤泉网站排名全网营销落地服务。
JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP
JSON的使用。
JSON基础介绍
JSON(JavaScript
Object
Notation)
是一种轻量级的数据交换格式。
JSON主要有两种结构:
“名称/值”对的集合,在PHP中可以理解为关联数组
(associative
array)。
值的有序列表(An
ordered
list
of
values)。在PHP中可以理解为普通数组(array)。
对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值'
对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、
null、对象(object)或者数组(array)。这些结构可以嵌套。
我目前对JSON的理解更偏向于数组,类似于PHP中的关联数组,你可以将PHP数组转换为JSON格式。
更多JSON的介绍请参考JSON官网和IBM关于JSON的介绍
PHP
JSON解析实例
PHP5.2开始已经将JSON作为PHP扩展的一部分,所以并不需要另外安装JSON。另外为了保证下面的PHP
JSON实例不出现中文乱码,请保证你的编码格式为UTF8。
JSON是Javascript的一部分,首先我们看下Javascript中如何定义JSON
复制代码
代码如下:
var
json_obj
=
{'WebName':'PHP网站开发教程网'};
alert(json_obj.WebName);
var
json_arr
=[{'WebName':'PHP网站开发教程网','WebSite':''},{'ArtTitle':'PHP
JSON实例讲解'}]
alert(json_arr[1].ArtTitle);
var
php_json
=
[['PHP网站开发教程网',''],['文章标题','PHP
JSON实例讲解']];
alert(php_json[1][0]);
在这段JSON实例代码中我构建了所有的JSON形式,
第1行,定义了JSON以对象形式存在
第4行,定义了JSON以数组形式存在,嵌套了JSON对象,所以有点类似于PHP的关联数组,其实仍然是对象。
第7行,定了JSON以普通数组形式存在。
注意:由于Javascript是区分大小写的,所以访问JSON关联数组对象时注意key的大小写问题。
PHP与JSON格式数据交互时,第一步需要将PHP数组转换为JSON格式的数据,可使用PHP5自带的json_encode函数,当PHP解析传递过来的JSON格式数据时需要使用json_decode函数进行解析转换为PHP数组,PHP转换并解析JSON数据的实例代码如下
复制代码
代码如下:
?php
$json_arr
=
array('WebName'='PHP网站开发教程网','WebSite'='');
$php_json
=
json_encode($json_arr);
echo
$php_json;
$php_json
=
json_decode($php_json);
print_r($php_json);
?
说明:这里通过PHP定义了关联数组,然后通过json_encode转换为JSON格式的数据,通过echo语句可以看到转换后的JSON对象,通过PHP
JSON解析函数json_decode可以将JSON格式的数据解析为PHP的关联数组。如果编码不正确,JSON中文会出现乱码。如果你使用Editplus调试PHP,请注意保存文件时编码将ANSI改为UTF8。
最后我们来看下完整的PHP
JSON交互实例
复制代码
代码如下:
?php
$json_arr
=
array('WebName'='PHP网站开发教程网','WebSite'='');
$php_json
=
json_encode($json_arr);
?
script
type="text/javascript"
var
php_json
=
?=$php_json?;
/script
script
type="text/javascript"
function
php_json_dis(php_json)
{
alert(php_json.WebName);
alert(php_json.WebSite);
}
php_json_dis(php_json);
/script
至此,PHP通过json_encode和json_decode函数对JSON格式数据进行转换和解析的实例就介绍完了。
1:
[id] = 408
[type] = china
[reality] = 120.00
[days] = 2016-06-20
2:
[id] = 408
[totalsave] = 200.00
[days] = 2016-06-20
3:
[id] = 408
[totalsave] = 3800.00
[days] = 2016-06-20
4:
[id] = 408
[totalwithdraw] = 92.00
[should] = 0.7176
[days] = 2016-06-20
5:
[id] = 408
[totalwithdraw] = 3908.00
[should] = 14.8504
[days] = 2016-06-20
结论
[id] = 408
[totalwithdraw] = 82.00
[should] = 0.6396
[days] = 2016-06-20
[totalsave] = 3800.00
[type] = 中文
[reality] = 0.00
看不出有神马逻辑关系。。
post的数据也可以是一个json,
php可以用json_encode()把数组转换成json;
例:
$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}
这篇文章主要介绍了PHP连接操作access数据库实例,本文直接给出实现代码,需要的朋友可以参考下
因为之前做的PingSwitch要做一个WEB展示的前端,因为一开始用了Delphi和access的结构,而Delphi与MySQL的连接又相对麻烦,最后只能选择用PHP+Access的组合,比较奇怪,但是也合理·····
在PHP中连接access数据库的话我们必须ADO来连接,这跟ASP中连接数据库非常的类似。下边给出了一段DEMO供大家参考。
?PHP
/*
创建ADO连接
*/
$conn
=
@new
COM("ADODB.Connection")
or
die
("ADO
Connection
faild.");
$connstr
=
"DRIVER={Microsoft
Access
Driver
(*.mdb)};
DBQ="
.
realpath("DATUM/cnbt.mdb");
$conn-Open($connstr);
/*
创建记录集查询
*/
$rs
=
@new
COM("ADODB.RecordSet");
$rs-Open("select
*
from
dbo_dirs",$conn,1,3);
/*
循环读取数据
*/
while(!$rs-eof){
echo
"$rs-Fields["title"]-Value;
echo
"br/";
$rs-Movenext();
//将记录集指针下移
}
$rs-close();
?
这样运行就没问题了····
以上所述就是本文的全部内容了,希望大家能够喜欢。
队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO)。
PHP
SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现。
SplQueue类摘要如下:
SplQueue简单使用如下:
复制代码
代码如下:
$queue
=
new
SplQueue();
/**
*
可见队列和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:
*
(1)SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_KEEP
(默认值,迭代后数据保存)
*
(2)SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_DELETE
(迭代后数据删除)
*/
$queue-setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_DELETE);
//SplQueue::enqueue()其实就是
SplDoublyLinkedList::push()
$queue-enqueue('a');
$queue-enqueue('b');
$queue-enqueue('c');
//SplQueue::dequeue()其实就是
SplDoublyLinkedList::shift()
print_r($queue-dequeue());
foreach($queue
as
$item)
{
echo
$item
.
PHP_EOL;
}
print_r($queue);
而优先队列SplPriorityQueue是基于堆(后文介绍)实现的。
SplPriorityQueue的类摘要如下:
SplPriorityQueue简单使用:
$pq
=
new
SplPriorityQueue();
$pq-insert('a',
10);
$pq-insert('b',
1);
$pq-insert('c',
8);
echo
$pq-count()
.PHP_EOL;
//3
echo
$pq-current()
.
PHP_EOL;
//a
/**
*
设置元素出队模式
*
SplPriorityQueue::EXTR_DATA
仅提取值
*
SplPriorityQueue::EXTR_PRIORITY
仅提取优先级
*
SplPriorityQueue::EXTR_BOTH
提取数组包含值和优先级
*/
$pq-setExtractFlags(SplPriorityQueue::EXTR_DATA);
while($pq-valid())
{
print_r($pq-current());
//a
c
b
$pq-next();
}