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 相关文章推荐
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
php 破解防盗链图片函数
Dec 09 PHP
php 执行系统命令的方法
Jul 07 PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
一个PHP的远程图片抓取函数分享
Sep 25 PHP
PHP修改session_id示例代码
Jan 08 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 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数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
javascript事件模型代码
2007/07/01 Javascript
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
javascript 获取图片颜色
2009/04/05 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
jquery CSS选择器笔记
2010/03/29 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python 实现归并排序算法
2012/06/05 Python
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
Python常用内置函数总结
2015/02/08 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
python调用摄像头显示图像的实例
2018/08/03 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
校长寄语大全
2014/04/09 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
2015年入党决心书
2015/02/05 职场文书
佛光寺导游词
2015/02/10 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
KTV员工管理制度
2015/08/06 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
解析Java异步之call future
2021/06/14 Java/Android