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+mysql写的留言本
Oct 09 PHP
在IIS上安装PHP4.0正式版
Oct 09 PHP
PHP5 的对象赋值机制介绍
Aug 02 PHP
用PHP实现Ftp用户的在线管理
Feb 16 PHP
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
php验证是否是md5编码的简单代码
Apr 01 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
Oct 13 PHP
php获取是星期几的的一些常用姿势
Dec 15 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 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发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
xml和web特殊字符
2009/04/28 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
vue-router 权限控制的示例代码
2017/09/21 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
python爬虫超时的处理的实例
2018/12/19 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
pytorch 共享参数的示例
2019/08/17 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
如何通过python检查文件是否被占用
2020/12/18 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
社区中秋节活动方案
2014/01/29 职场文书
文明学生事迹材料
2014/01/29 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
培训通知书模板
2015/04/17 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript