PHP实现数组和对象的相互转换操作示例
时间:2022-07-27
本文章向大家介绍PHP实现数组和对象的相互转换操作示例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例讲述了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数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php常用函数与技巧总结》、《PHP错误与异常处理方法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Go语言学习之函数
- 【Spark Operator】webhook的分析
- 图解人脸识别算法facenet系列(一)
- Go 语言学习之 struct
- Go 语言学习之map
- 前端|利用手机号登录获取手机验证码
- Linux netstat命令结果分析
- setlistmap部分源码解析
- 使用 Log4j2 + SLF4j 打造日志系统的全方位教程
- 树莓派4的操作系统安装烧录、设置SSH、WIFI、VNC及备份
- C# dotnet 使用 startIndex 提升 IndexOf 的性能
- vscode .vue文件格式配置 使其与webstorm设置一致
- Go 语言学习之 slice
- koa2实现微信公众号关注自动回复消息
- 两个字数字字符串求和