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 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
逆序二维数组插入一元素的php代码
Jun 08 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
php实现文件下载实例分享
Jun 02 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
php实现分页显示
Nov 03 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
处理单名多值表单的详解
2013/06/08 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
JavaScript库 开发规则
2009/01/31 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
python获取mp3文件信息的方法
2015/06/15 Python
PyQT实现多窗口切换
2018/04/20 Python
Python玩转Excel的读写改实例
2019/02/22 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Python必须了解的35个关键词
2020/07/16 Python
pycharm导入源码的具体步骤
2020/08/04 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
什么是接口(Interface)?
2013/02/01 面试题
几个人围成一圈的问题
2013/09/26 面试题
开业庆典邀请函
2014/01/08 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
教师党性分析材料
2014/02/04 职场文书
大学校务公开实施方案
2014/03/31 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
Python中Cookies导出某站用户数据的方法
2021/05/17 Python