stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候任何地方都可以被new,可以让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。
凡时用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用

  $user = new stdClass();
  $user->id=100;
  $user->name = 'gouki';
  $myUser = $user;//在php4以前需要$myUser = & $user; 因为在那时赋值的时候相当于复制一遍而5以后就是引用的地址 
  $myUser->name = 'flypig';//为它赋值时是直接修改在其它页面也是一样
  var_dump($myUser);//object(stdClass)#1 (2) { ["id"]=> int(100) ["name"]=> string(6) "flypig" }

  所以在5以后,stdClass对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝

为什么不用数组呢?数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存

1:可以取代数组

  
$a =[0=>1,1=>2,2=>3];//这个例子这一个是必须的这个数组就算没有值也要声明一个空数组否则会报警告的错误!!
$a = (object)$a;//将数组转化成对象这时由于没有class所以默认是stdClass的类的对象,任何用(object)强制转换都会得到一个stdClass的实例
$a->id = '11 ';//将值放进stdClass对象
$a->username = 'me';
print_r($a);//stdClass Object ( [0]=>1 [1] => 2 [2] => 3 [id] => 11 [username] => me )
 
从上例可以看出新建空对像却要$andy = new Andy; 而且还得先有个class Andy{}即先得有个数组或者空数组并且还得将数组转化成对象比较麻烦
下面就是简单的用法
 
  $a = new stdClass();
  $a->id = '11 ';
  $a->username = 'me';
  print_r($a);
 
多时候用这种方法取代数组的使用,只不过是换一种语法形式

用new实例化后,前面的数组和内容清空,只留下后面添加进来的,如果不实例化,stdClass将保留所有元素。  

 
  $a = array(1=>2,2=>3);
  $a = (object)$a;
  $a = new stdClass();
  $a->id = '11 ';
  $a->username = 'me';
print_r($a);//输出:stdClass Object ( [id] => 11 [username] => me ) 
 

php stdClass类的用法的更多相关文章

  1. php的stdClass类

    在PHP内核进行模块初始化操作时会自动加载这个函数, 这样,stdClass类的注册操作也就会被执行了.stdClass类是一个没有成员变量也没有成员方法的类. 它的所有的魔术方法,父类.接口等在初始 ...

  2. C#中timer类的用法

    C#中timer类的用法 关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类 ...

  3. C#正则表达式Regex类的用法

    C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...

  4. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  5. android中Handle类的用法

    android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...

  6. Handle类的用法

    android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...

  7. android application类的用法

    android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...

  8. php class类的用法详细总结

    以下是对php中class类的用法进行了详细的总结介绍,需要的朋友可以过来参考下 一:结构和调用(实例化): class className{} ,调用:$obj = new className(); ...

  9. day319 1、正则表达式的定义及使用 2、Date类的用法 3、Calendar类的用法

    1.正则表达式的定义及使用2.Date类的用法3.Calendar类的用法 一.正则表达式 ###01正则表达式的概念和作用* A: 正则表达式的概念和作用* a: 正则表达式的概述* 正则表达式也是 ...

随机推荐

  1. 数组自定义排序:IComparable和IComparer接口

    首先先说一下IComparable和IComparer的区别,前者必须在实体类中实现,后者可以单独出现在一个排序类中,即此类只包含一个compare方法. Array类使用快速算法对数组中的元素进行排 ...

  2. 【IOS开发】基础

    1.Objective-C 为 ANSI C 添加了下述语法和功能: 定义新的类 类和实例方法 方法调用(称为发消息) 属性声明(以及通过它们自动合成存取方法) 静态和动态类型化 块 (block), ...

  3. 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP

    由ASP.NET所谓前台调用后台.后台调用前台想到HTTP 在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议内容,在由 ...

  4. 在MVC中添加异常增加日志

    MVC的结构非常棒,基本你能想到注入的地方都可以找到地方,譬如IActionFilter,IResultFilter,IAuthorizationFilter以及IExceptionFilter 以下 ...

  5. jQuery判断浏览器类型

    if ($.browser.msie) { alert("IE浏览器"); } else if ($.browser.opera) { alert("opera浏览器&q ...

  6. [转]Python tips: 什么是*args和**kwargs?

    Python tips: 什么是*args和**kwargs? 原文地址:http://www.cnblogs.com/fengmk2/archive/2008/04/21/1163766.html ...

  7. 服务端获取客户端html页面内容-2013-6-28-2

    客户端怎么提交  整个html页面?    分析:      1>我们知道b/s模式,也知道http协议.服务端想要获取客户端的数据,客户端就 必须提交给它,服务器才能获取到.     2> ...

  8. 使用IDEA开发

    IDEA 在使用IDEA之前,我是eclipse的忠实用户.无论是最初学习java,还是后来用python/golang. eclipse丰富的插件已经满足了我大部分的使用,直到在师弟的大力推荐下使用 ...

  9. 根据Mob官网的天气预报接口写了一个简单的demo

    第一步 自己注册一个应用,然后获取里面的 App Key,下载MobAPI SDK 然后拖入 MobAPI.framework 和 MOBFoundation.framework 到你的项目中 第二步 ...

  10. Linux下安装zookeeper集群

    首先,准备三台Linux虚拟机 三台机器 centos01 :192.168.1.168(lxs001)   centos03 :192.168.1.178(lxs003)   centos03 :1 ...