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 相关文章推荐
PHP学习之正则表达式
Apr 17 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
PHP中上传多个文件的表单设计例子
Nov 19 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
PHP生成压缩文件实例
Feb 07 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 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结合飞信 免费天气预报短信
2009/05/07 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
firefox中JS读取XML文件
2006/12/21 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
python中bisect模块用法实例
2014/09/25 Python
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
python中Apriori算法实现讲解
2017/12/10 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
如何用Django处理gzip数据流
2021/01/29 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
2019年c语言经典面试题目
2016/08/17 面试题
房地产管理毕业生自荐信
2013/11/04 职场文书
设计师求职信模板
2014/05/06 职场文书
创先争优一句话承诺
2014/05/29 职场文书
宾馆安全管理制度
2015/08/06 职场文书
理解python中装饰器的作用
2021/07/21 Python
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL