php简单对象与数组的转换函数代码(php多层数组和对象的转换)


Posted in PHP onMay 18, 2011
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; 
}

上面的内容来自 cnblogs jaiho
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); 
?>

PHP 相关文章推荐
定制404错误页面,并发信给管理员的程序
Oct 09 PHP
php学习笔记之 函数声明
Jun 09 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
Jul 31 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
Chrome Web App开发小结
Sep 04 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
laravel 5 实现模板主题功能
Mar 02 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 #PHP
php小型企业库存管理系统的设计与实现代码
May 16 #PHP
Views rows style模板重写代码
May 16 #PHP
rrmdir php中递归删除目录及目录下的文件
May 15 #PHP
centos 5.6 升级php到5.3的方法
May 14 #PHP
php中在PDO中使用事务(Transaction)
May 14 #PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 #PHP
You might like
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
vue实现标签云效果的示例
2020/11/09 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
Python程序语言快速上手教程
2012/07/18 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python入门之modf()方法的使用
2015/05/15 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
详解python中的线程与线程池
2019/05/10 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Python3开发环境搭建详细教程
2020/06/18 Python
数学教学随笔感言
2014/02/17 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
毕业论文致谢范文
2015/05/14 职场文书
2015年高中语文教学总结
2015/08/18 职场文书
高二数学教学反思
2016/02/18 职场文书
《日月潭》教学反思
2016/02/20 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL