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 相关文章推荐
PHP配置文件中最常用四个ini函数
Mar 19 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
php+memcache实现的网站在线人数统计代码
Jul 04 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
PHP安全下载文件的方法
Apr 07 PHP
浅析PHP开发规范
Feb 05 PHP
yii2多图上传组件的使用教程
May 10 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
php7 list()、session及其他模块的修改实例分析
May 25 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
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
如何使用php输出时间格式
2013/08/31 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python中列表和元组的区别
2017/12/18 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
Python如何使用input函数获取输入
2020/08/06 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
酒店销售经理岗位职责
2014/01/31 职场文书
创建文明学校实施方案
2014/03/11 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
美丽心灵观后感
2015/06/01 职场文书
讲解MySQL增删改操作
2022/05/06 MySQL