热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php数组与对象相互转换方法

php数组与对象相互转换方法functionarrayToObject($e){if(gettype($e)!&39;array&39;)return;foreach($eas$k>$v){if(gettype($v)&39

php数组与对象相互转换方法

  1. function arrayToObject($e){ 
  2.     ifgettype($e)!='array' ) return
  3.     foreach($e as $k=>$v){ 
  4.         ifgettype($v)=='array' || getType($v)=='object' ) 
  5.             $e[$k]=(object)arrayToObject($v); 
  6.     } 
  7.     return (object)$e
  8.  
  9. function objectToArray($e){ 
  10.     $e=(array)$e
  11.     foreach($e as $k=>$v){ 
  12.         ifgettype($v)=='resource' ) return
  13.         ifgettype($v)=='object' || gettype($v)=='array' ) 
  14.             $e[$k]=(array)objectToArray($v); 
  15.     } 
  16.     return $e

关于数组转换为对象,在phpx有看到一些帖子讨论.

  1. $andy = array(); 
  2. $andy['a'] = 1; 
  3. $andy['b'] = 2; 
  4. $andy['c'] = 3; 

把andy强制转换为数组,似乎引用的方便些了,主要是变成了->

  1. $andy = array(); 
  2. $andy = (object)$andy
  3. $andy->a = 1; 
  4. $andy->b = 2; 
  5. $andy->c = 3; 

还嫌它麻烦,再用StdClass

  1. $andy = new StdClass; 
  2. $andy->a = 1; 
  3. $andy->b = 2; 
  4. $andy->c = 3; 

stdClass 是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object,同时,这个基类又有一个特殊的地方,就是没有方法,在这里,还有一点是对象和数组资源耗费的问题:PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一 点,在其它页面为它赋值时是直接修改,而不是引用一个拷贝,数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(没有测试过),还有一个函数arrayobject,可以直接将数组转化为 对象这也是一个好办法.

  1. ArrayObject::__construct -- Construct a new array object 
  2. $array = array('1' => 'one'
  3. '2' => 'two'
  4. '3' => 'three'); 
  5. $arrayobject = new ArrayObject($array); 
  6. print_r($arrayobject); 
  7. ?> 
  8. ArrayObject Object 
  9.     [1] => one 
  10.     [2] => two 
  11.     [3] => three 

试验了一下对象转换为数组,也可以强制转换:

$arr = (array)$obj;

如下例子转换结果,可对比:

  1. Tag Object 
  2.     [name] => main 
  3.     [text] =>  
  4.     [parrent] =>  
  5.     [content] =>  
  6.     [props] => Array 
  7.         ( 
  8.         ) 
  9.  
  10.     [inner] => Array 
  11.         ( 
  12.         ) 
  13.  
  14.     [level] => 0 
  15.  
  16. Array 
  17.     [name] => main 
  18.     [text] =>  
  19.     [parrent] =>  
  20.     [content] =>  
  21.     [props] => Array 
  22.         ( 
  23.         ) 
  24.  
  25.     [inner] => Array 
  26.         ( 
  27.         ) 
  28.  
  29.     [level] => 0 

推荐阅读
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 本文详细介绍了如何在不同操作系统和设备上设置和配置网络连接的IP地址,涵盖静态和动态IP地址的设置方法。同时,提供了关于路由器和机顶盒等设备的IP配置指南。 ... [详细]
  • 在年前忙碌的家务和年后走亲访友之后,终于有时间重新投入到编程的世界中。年前遇到了连通器问题的困扰,希望今晚能够顺利解决。新的一年,新的开始,期待在技术领域取得更大的进步。 ... [详细]
  • Android Studio 安装与配置指南
    本教程详细介绍了如何下载并安装 Android Studio,包括设置 SDK 路径和优化启动性能的方法。通过这些步骤,您可以顺利地开始开发 Android 应用。 ... [详细]
  • 本文详细介绍了福昕软件公司开发的Foxit PDF SDK ActiveX控件(版本5.20),并提供了关于其在64位Windows 7系统和Visual Studio 2013环境下的使用方法。该控件文件名为FoxitPDFSDKActiveX520_Std_x64.ocx,适用于集成PDF功能到应用程序中。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了如何在PHP中实现基于概率的随机抽奖功能。通过实例代码,解释了抽奖逻辑、奖品设置及结果统计的方法。适合PHP开发者参考学习。 ... [详细]
  • 本文对宋代词人朱雍的《迷神引》进行翻译和赏析,深入探讨其词作的艺术特色与情感表达。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 本文介绍如何使用PHP在WordPress中根据分类类别ID或名称获取所有相关文章,提供详细的方法和代码示例。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
author-avatar
记者刘方斌_304
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有