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中如何调用用户自定义函数
Aug 06 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 PHP
phpfpm的作用和用法
Oct 10 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 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注入点构造代码
2008/06/14 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
设定php简写功能的方法
2019/11/28 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
vue cli 全面解析
2018/02/28 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Python中装饰器高级用法详解
2017/12/25 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
python程序需要编译吗
2020/06/19 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
软件测试英文面试题
2012/10/14 面试题
门市房租房协议书
2014/12/04 职场文书
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python