1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function
arrayToObject(
$e
){
if
(
gettype
(
$e
)!=
'array'
)
return
;
foreach
(
$e
as
$k
=>
$v
){
if
(
gettype
(
$v
)==
'array'
||
getType
(
$v
)==
'object'
)
$e
[
$k
]=(object)arrayToObject(
$v
);
}
return
(object)
$e
;
}
function
objectToArray(
$e
){
$e
=(
array
)
$e
;
foreach
(
$e
as
$k
=>
$v
){
if
(
gettype
(
$v
)==
'resource'
)
return
;
if
(
gettype
(
$v
)==
'object'
||
gettype
(
$v
)==
'array'
)
$e
[
$k
]=(
array
)objectToArray(
$v
);
}
return
$e
;
}
PHP serialize & 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建构于两种结构:
var
test
=
{
"
Name
"
:
"
Peter
"
,
"
Age
"
:
20
};
document.write(test.Name + " : " + test.Age); 显示结果:
Peter:
20
变量test中{"Name":"Peter","Age":20}为一个有2个元素的对象(感觉就像PHP的数组):
var
test
=
{
"
User
"
:{
"
Name
"
:
"
Peter
"
,
"
Age
"
:
20
},
"
Company
"
:
"
FORD
"
};
document.write(test.User.Name + " : " + test.Company); 显示结果:
Peter: FORD
这个例子中User元素中包含了Name和Age。
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"]); 显示结果:
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
;}}
这个结果看上去比JSON要复杂一些,其实也很简单,它说明的就是一些数据类型和结构。
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 从这个例子中可以看出来,serialize对数据的类型和结构都进行的保存,
$arr
=
array
( ' Name ' => ' Peter ' , ' Age ' => 20 ); $jsonencode = json_encode( $arr ); echo $jsonencode ; 显示结果:
{
"
Name
"
:
"
Peter
"
,
"
Age
"
:
20
}
这个结果和例一中test值是一样的,通过json_encode将PHP中的变量转换为JSON字符出表达式。
$var
=
'
{"Name":"Peter","Age":20}
'
;
$jsondecode = json_decode( $var ); print_r ( $jsondecode ); 显示结果:
stdClass
Object
( [Name]
=>
Peter [Age]
=>
20
)
这的确验证了,在JSON中{"Name":"Peter","Age":20}是一个对象,但是在PHP中也可以将其转为数组,在json_decode中将ASSOC参数设置为True即可。
$var
=
'
{"Name":"Peter","Age":20}
'
;
$jsondecode = json_decode( $var , true ); print_r ( $jsondecode ); 显示结果:
Array
( [Name]
=>
Peter [Age]
=>
20
)
|
对象数组转换
最新推荐文章于 2022-07-14 17:24:13 发布
最近用到一些简单的对象与数组的相互转换的问题,采用递归写了两个方法如下