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作的文本留言本的例子(四)
Oct 09 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
PHP实现文件下载详解
Nov 27 PHP
PHP连接SQLServer2005的方法
Jan 27 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
PHP实现的简单AES加密解密算法实例
May 29 PHP
万能的php分页类
Jul 06 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php curl选项列表(超详细)
2013/07/01 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
php 实现进制相互转换
2016/04/07 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
JS提交form表单实例分析
2015/12/10 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
loading动画特效小结
2017/01/22 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
JS验证码实现代码
2017/09/14 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
python银行系统实现源码
2019/10/25 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
详解Django中异步任务之django-celery
2020/11/05 Python
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
幼儿园六一儿童节活动方案
2014/08/26 职场文书
钱学森电影观后感
2015/06/04 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL