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 相关文章推荐
Content-type 的说明
Oct 09 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
深入PHP数据加密详解
Jun 18 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
PHP实现通过get方式识别用户发送邮件的方法
Jul 16 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
详解json在php中的应用
Sep 30 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 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 iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
在Python中使用Neo4j数据库的教程
2015/04/16 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python之reload流程实例代码解析
2018/01/29 Python
Python算法中的时间复杂度问题
2019/11/19 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
创建无烟单位实施方案
2014/03/29 职场文书
中学生打架检讨书
2014/10/13 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
Moment的feature导致线上bug解决分析
2022/09/23 Javascript