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 相关文章推荐
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
php文件上传的例子及参数详解
Dec 12 PHP
PHP静态文件生成类实例
Nov 29 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 PHP
关于PHP开发的9条建议
Jul 27 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
PHP判断密码强度的方法详解
May 26 PHP
详解php中的implements 使用
Jun 13 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
Apr 14 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
一个简单的域名注册情况查询程序
2006/10/09 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
IE与firefox之jquery用法区别
2008/10/03 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JQuery自动触发事件的方法
2015/06/13 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python查看模块,对象的函数方法
2018/10/16 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
python中的插入排序的简单用法
2021/01/19 Python
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
《孔子拜师》教学反思
2014/02/24 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
Oracle 多表查询基本语法实例
2022/04/18 Oracle