PHP实现数组和对象的相互转换操作示例


Posted in PHP onMarch 20, 2019

本文实例讲述了PHP实现数组和对象的相互转换操作。分享给大家供大家参考,具体如下:

关于php中想让对象以数组的形式访问,这时候就需要使用到get_object_vars()函数了。先来介绍一下这个函数。

官方文档是这样解释的:

array get_object_vars ( object $obj )

返回由 obj 指定的对象中定义的属性组成的关联数组。

举一个栗子:

<?php
class Point2D {
  var $x, $y;
  var $label;
  function Point2D($x, $y)
  {
    $this->x = $x;
    $this->y = $y;
  }
  function setLabel($label)
  {
    $this->label = $label;
  }
  function getPoint()
  {
    return array("x" => $this->x,
           "y" => $this->y,
           "label" => $this->label);
  }
}
// "$label" is declared but not defined
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));
$p1->setLabel("point #1");
print_r(get_object_vars($p1));
?>

会输出:

Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] =>
 )
 Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] => point #1
 )

这样就很好理解了,这个函数就是对象转数组的关键函数。

对象转数组具体实现

function objectToArray($obj) {
  //首先判断是否是对象
  $arr = is_object($obj) ? get_object_vars($obj) : $obj;
  if(is_array($arr)) {
    //这里相当于递归了一下,如果子元素还是对象的话继续向下转换
    return array_map(__FUNCTION__, $arr);
  }else {
    return $arr;
  }
}

数组转对象具体实现

function arrayToObject($arr) {
  if(is_array($arr)) {
    return (object)array_map(__FUNCTION__, $arr);
  }else {
    return $arr;
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个改进的UBB类
Oct 09 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
thinkphp3.0 模板中函数的使用
Nov 13 PHP
精美漂亮的php分页类代码
Apr 02 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
php中的ini配置原理详解
Oct 14 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
PHP实现简单登录界面
Oct 23 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 #PHP
PHP工厂模式的日常使用
Mar 20 #PHP
PHP函数积累总结
Mar 19 #PHP
PHP与Perl之间知识点区别整理
Mar 19 #PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 #PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 #PHP
php+ajax 文件上传代码实例
Mar 18 #PHP
You might like
php 空格,换行,跳格使用说明
2009/12/18 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
JS解析XML实例分析
2015/01/30 Javascript
angularJS 入门基础
2015/02/09 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
Python返回真假值(True or False)小技巧
2015/04/10 Python
python中的lambda表达式用法详解
2016/06/22 Python
python版本的仿windows计划任务工具
2018/04/30 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
网络维护管理员的自我评价分享
2013/11/11 职场文书
国际会议邀请函范文
2014/01/16 职场文书
发展部经理职责规定
2014/02/22 职场文书
老干部工作先进事迹
2014/08/17 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
休学证明范本
2015/06/19 职场文书
汽车修理厂管理制度
2015/08/05 职场文书