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 相关文章推荐
2.PHP入门
Oct 09 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
php中spl_autoload详解
Oct 17 PHP
php检测图片主要颜色的方法
Jul 01 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
两种php给图片加水印的实现代码
Apr 18 PHP
PHP程序员的技术成长规划
Mar 25 PHP
PHP基于XMLWriter操作xml的方法分析
Jul 17 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
php去除数组中为0的元素的实例分析
Nov 17 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
php实现可逆加密的方法
2015/08/11 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
JS实现小星星特效
2019/12/24 Javascript
python实现计算倒数的方法
2015/07/11 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
深入浅析Python传值与传址
2018/07/10 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
Java基础面试题
2012/11/02 面试题
一份恶作剧的检讨书
2014/09/13 职场文书
公司合并协议书范本
2014/09/30 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
2014年绿化工作总结
2014/12/09 职场文书
Java实现多线程聊天室
2021/06/26 Java/Android
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python