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分页实例代码分享
Jul 28 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
php操作mongoDB实例分析
Dec 29 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
laravel 中某一字段自增、自减的例子
Oct 11 PHP
PHP实现文件上传与下载
Aug 28 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
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
php代码书写习惯优化小结
2013/06/20 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
Python Tkinter GUI编程入门介绍
2015/03/10 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
django反向解析和正向解析的方式
2018/06/05 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
高二政治教学反思
2014/02/01 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
小学四年级作文之写景
2019/08/23 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js