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时间不正确的解决方法
Apr 09 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
PHP--用万网的接口实现域名查询功能
Dec 13 PHP
PHP随机字符串生成代码(包括大小写字母)
Jun 24 PHP
php打包压缩文件之ZipArchive方法用法分析
Apr 30 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
Yii框架响应组件用法实例分析
Sep 04 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
laravel框架的安装与路由实例分析
Oct 11 PHP
Laravel相关的一些故障解决
Aug 19 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和oracle数据库性能比较
2006/10/09 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
Django中的cookie和session
2019/08/27 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
网络安全方面的面试题
2016/01/07 面试题
竞选班干部演讲稿500字
2014/08/20 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
师范生见习总结范文
2015/06/23 职场文书
《颐和园》教学反思
2016/02/19 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL