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 相关文章推荐
《APMServ 5.1.2》使用图解
Oct 23 PHP
php mssql 数据库分页SQL语句
Dec 16 PHP
PHP XML数据解析代码
May 26 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
Aug 20 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
php workerman定时任务的实现代码
Dec 23 PHP
laravel接管Dingo-api和默认的错误处理方式
Oct 25 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 smarty模版引擎中的缓存应用
2009/12/02 PHP
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
python批量修改文件名的实现代码
2014/09/01 Python
Python中实现对list做减法操作介绍
2015/01/09 Python
Python中标准模块importlib详解
2017/04/16 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
python 制作简单的音乐播放器
2020/11/25 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
2015年项目工作总结
2015/04/29 职场文书
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang