当前位置:首页 > PHP教程 > php数组 > 列表

PHP实现数组和对象的相互转换操作示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-13 22:24:24 浏览: 评论:0 

这篇文章主要介绍了PHP实现数组和对象的相互转换操作,结合实例形式分析了php使用get_object_vars以数组形式访问对象的方法,以及对象与数组相互转换操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现数组和对象的相互转换操作,分享给大家供大家参考,具体如下:

关于php中想让对象以数组的形式访问,这时候就需要使用到get_object_vars()函数了。先来介绍一下这个函数。

官方文档是这样解释的:

array get_object_vars ( object $obj )

返回由 obj 指定的对象中定义的属性组成的关联数组。

举一个栗子:

  1. <?php 
  2. class Point2D { 
  3.   var $x$y
  4.   var $label
  5.   function Point2D($x$y
  6.   { 
  7.     $this->x = $x
  8.     $this->y = $y
  9.   } 
  10.   function setLabel($label
  11.   { 
  12.     $this->label = $label
  13.   } 
  14.   function getPoint() 
  15.   { 
  16.     return array("x" => $this->x, 
  17.            "y" => $this->y, 
  18.            "label" => $this->label); 
  19.   } 
  20. // "$label" is declared but not defined 
  21. $p1 = new Point2D(1.233, 3.445); 
  22. print_r(get_object_vars($p1)); 
  23. $p1->setLabel("point #1"); 
  24. print_r(get_object_vars($p1)); 
  25. ?> 

会输出:

  1. Array 
  2.  ( 
  3.      [x] => 1.233 
  4.      [y] => 3.445 
  5.      [label] => 
  6.  ) 
  7.  Array 
  8.  ( 
  9.      [x] => 1.233 
  10.      [y] => 3.445 
  11.      [label] => point #1 
  12.  ) 

这样就很好理解了,这个函数就是对象转数组的关键函数。

对象转数组具体实现

  1. function objectToArray($obj) { 
  2.   //首先判断是否是对象 
  3.   $arr = is_object($obj) ? get_object_vars($obj) : $obj
  4.   if(is_array($arr)) { 
  5.     //这里相当于递归了一下,如果子元素还是对象的话继续向下转换 
  6.     return array_map(__FUNCTION__$arr); 
  7.   }else { 
  8.     return $arr
  9.   } 

数组转对象具体实现

  1. function arrayToObject($arr) { 
  2.   if(is_array($arr)) { 
  3.     return (object)array_map(__FUNCTION__$arr); 
  4.   }else { 
  5.     return $arr
  6.   } 
  7. }

Tags: PHP数组对象 PHP转换

分享到: