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 相关文章推荐
PHP5在Apache下的两种模式的安装
Sep 05 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
php的字符串用法小结
Jun 08 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
php去除数组中重复数据
Nov 18 PHP
Yii核心组件AssetManager原理分析
Dec 02 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 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+MySQL的聊天室设计
2006/10/09 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
php array_map()函数实例用法
2021/03/03 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
Python模块结构与布局操作方法实例分析
2017/07/24 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
《第一次抱母亲》教学反思
2014/04/16 职场文书
会计个人实习计划书
2014/08/15 职场文书
文明班级申报材料
2014/12/24 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫