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 相关文章推荐
安装APACHE
Jan 15 PHP
整理的9个实用的PHP库简介和下载
Nov 09 PHP
php实现单链表的实例代码
Mar 22 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
php数据库备份还原类分享
Mar 20 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
PHP使用array_merge重新排列数组下标的方法
Jul 22 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
浅谈PHP实现大流量下抢购方案
Dec 15 PHP
laravel使用数据库测试注意事项
Apr 10 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 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 If Else(elsefi) 语句
2013/04/07 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
js Event对象的5种坐标
2011/09/12 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python中正则表达式详解
2017/05/17 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
HTML5的新特性(1)
2016/03/03 HTML / CSS
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
理发店策划方案
2014/06/05 职场文书
综治维稳工作汇报
2014/10/27 职场文书
交通安全教育主题班会
2015/08/12 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript
gojs实现蚂蚁线动画效果
2022/02/18 Javascript