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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 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网站地图生成类示例
2014/01/13 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
简述Python中的面向对象编程的概念
2015/04/27 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
python队列queue模块详解
2018/04/27 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
新教师工作感言
2014/02/16 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
公司委托书范本5篇
2014/09/20 职场文书
工厂标语大全
2014/10/06 职场文书
无罪辩护词范文
2015/05/21 职场文书
消防宣传标语大全
2015/08/03 职场文书
小学副班长竞选稿
2015/11/21 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python