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的memcached客户端memcached
Jun 14 PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
Jan 07 PHP
PHP实现冒泡排序的简单实例
May 26 PHP
PHP设置images目录不充许http访问的方法
Nov 01 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 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中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
ES6中异步对象Promise用法详解
2019/07/31 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
python timestamp和datetime之间转换详解
2017/12/11 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
Python输入二维数组方法
2018/04/13 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
优秀毕业生自我鉴定
2014/01/19 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
写给女朋友的保证书
2015/05/09 职场文书
文明礼仪主题班会
2015/08/13 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
python实战之用emoji表情生成文字
2021/05/08 Python
浅谈Python数学建模之数据导入
2021/06/23 Python
Python实现滑雪小游戏
2021/09/25 Python
python内置模块之上下文管理contextlib
2022/06/14 Python