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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
简单的PHP图片上传程序
Mar 27 PHP
PHP 工厂模式使用方法
May 18 PHP
ini_set的用法介绍
Jan 07 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 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获取操作系统语言代码
2013/11/04 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
JQuery autocomplete 使用手册
2010/04/01 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
python小技巧之批量抓取美女图片
2014/06/06 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Python的pygame安装教程详解
2020/02/10 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
农行实习自我鉴定
2013/09/22 职场文书
银行办公室岗位职责
2014/03/10 职场文书
保护环境建议书
2014/03/12 职场文书
歌唱比赛主持词
2014/03/18 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
nginx设置资源请求目录的方式详解
2022/05/30 Servers