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多层数组和对象的转换
多层数组和对象转化的用途很简单,便于处理WebService中多层数组和对象的转化
简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。
通过json_decode(json_encode($object)可以将对象一次性转换为数组,但是object中遇到非utf-8编码的非ascii字符则会出现问题,比如gbk的中文,何况json_encode和decode的性能也值得疑虑。
<?php
function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
}
else {
// Return array
return $d;
}
}
function arrayToObject($d) {
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return (object) array_map(__FUNCTION__, $d);
}
else {
// Return object
return $d;
}
}
// Useage:
// Create new stdClass Object
$init = new stdClass;
// Add some test data
$init->foo = "Test data";
$init->bar = new stdClass;
$init->bar->baaz = "Testing";
$init->bar->fooz = new stdClass;
$init->bar->fooz->baz = "Testing again";
$init->foox = "Just test";
// Convert array to object and then object back to array
$array = objectToArray($init);
$object = arrayToObject($array);
// Print objects and array
print_r($init);
echo "\n";
print_r($array);
echo "\n";
print_r($object);
?>
分享到:
相关推荐
array_diff -- 计算数组的差集 array_fill -- 用给定的值填充数组 array_filter -- 用回调函数过滤数组中的单元 array_flip -- 交换数组中的键和值 array_intersect_assoc -- 带索引检查计算数组的交集 array_...
最新单片机仿真 用数组作函数参数控制流水花样最新单片机仿真 用数组作函数参数控制流水花样最新单片机仿真 用数组作函数参数控制流水花样最新单片机仿真 用数组作函数参数控制流水花样最新单片机仿真 用数组作函数...
298-用数组作函数参数控制流水花样(51单片机C语言实例Proteus仿真和代码)298-用数组作函数参数控制流水花样(51单片机C语言实例Proteus仿真和代码)298-用数组作函数参数控制流水花样(51单片机C语言实例Proteus仿真和...
299-用数组作函数参数控制流水花样(51单片机C语言实例Proteus仿真和代码)299-用数组作函数参数控制流水花样(51单片机C语言实例Proteus仿真和代码)299-用数组作函数参数控制流水花样(51单片机C语言实例Proteus仿真和...
主要介绍了C语言中数组作为函数的参数以及返回值的使用简单入门,这里以一维数组作为基本条件进行例子讲解,需要的朋友可以参考下
1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。 2、数组名对应着(而不是指向... 3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
301-用指针数组作为函数的参数显示多个字符串(51单片机C语言实例Proteus仿真和代码)301-用指针数组作为函数的参数显示多个字符串(51单片机C语言实例Proteus仿真和代码)301-用指针数组作为函数的参数显示多个字符串...
用数组创建函数创建一个二维数组显示件,成员为: 4 5 6 1 2 3 3 4 5 6 1 2 2 3 4 5 6 1 1 2 3 4 5 6 编程将上述创建的数组转置为: 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 1 5 6 1 2 6 1 2 3
使用php数组和函数逻辑实现的通讯录功能,集添加、查询、删除功能于一体,代码逻辑结构简洁明了。下载后,解压到自己搭建的php环境中服务器的根目录中,开启服务后即可运行。
数组的转换函数
c++实现的vector的数组中是否存在某元素和查找该元素的迭代器的函数
C语言中指针、数组和函数的综合应用与实例解析.pdf
主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
一个很有用的封装,整个php文件中只需要定义 $**=new (mysql) 即可 $*=$**->query(sql语句) 即会反回一个可直接输出元素的数组
基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数...
java学习中数组复制函数的调用方法,供java初学者入门参考使用,分享给大家
基于Keil的数组作函数参数控制流水花样.rar(源码+仿真)基于Keil的数组作函数参数控制流水花样.rar(源码+仿真)基于Keil的数组作函数参数控制流水花样.rar(源码+仿真)基于Keil的数组作函数参数控制流水花样.rar...
C语言的简单基本实例,包括循环、嵌套、数组、指针、函数、结构体等内容。