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面向对象全攻略 (八)重载新的方法
Sep 30 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
关于php mvc开发模式的感想
Jun 28 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
ThinkPHP框架实现session跨域问题的解决方法
Jul 01 PHP
php验证session无效的解决方法
Nov 04 PHP
PHP闭包函数详解
Feb 13 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 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缓冲区为你的站点加速
2015/10/10 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
jquery显示隐藏input对象
2014/07/21 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
Vue.js 插件开发详解
2017/03/29 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
讲解python参数和作用域的使用
2013/11/01 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
django将数组传递给前台模板的方法
2019/08/06 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
简单了解python协程的相关知识
2019/08/31 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
应届生会计求职信
2013/11/11 职场文书
党员服务承诺书
2014/05/28 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
超市采购员岗位职责
2015/04/07 职场文书
故意伤害辩护词
2015/05/21 职场文书
MySQL之DML语言
2021/04/05 MySQL