php中stdClass的用法分析


Posted in PHP onFebruary 27, 2015

本文实例分析了php中stdClass的用法。分享给大家供大家参考。具体分析如下:

stdclass在php中是预定义的几个类之一,是zent保留的一个类。实际上它是PHP提供的一个基类,就是一个空白的类,里面什么都没有,我们可以实例化它,然后定义一系列的变量,通过它来进行变量的传递(很多php程序员用它来传递一系列变量的值,而同时又懒得去创建一个自己的类)。但是,由于实例化后不能添加方法,只能传递属性。因为,一旦类被实列化以后,就不能在添加方法了。

stdclass可以作为基类使用,其最大特点是,(其派生类)可以自动添加成员变量,而无须在定义时说明。

一切php变量都是stdClass的实例。

使用方法:

1、使用stdclass:

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

这样数量a、b、c就填进了stdclass里面。这样要省事,因为新建空对像却要$andy = new Andy; 而且还得先有个class Andy{}。又如:

<?php
$a = new stdClass();
$a->id = '11 ';
$a->username = 'me';
print_r($a);
?>

将会输出:stdClass Object ( [id] => 11 [username] => me ) 。
很多时候用这种方法取代数组的使用,只不过是换一种语法形式。

2、读取:

stdClass Object
(
  [getWeatherbyCityNameResult] => stdClass Object
    (
      [string] => Array
        (
          [0] => 四川
          [1] => 成都
          [2] => 56294
          [3] => 56294.jpg
          [4] => 2009-5-17 13:52:08
          [5] => 26℃/19℃
          [6] => 5月17日 阴转阵雨
        )
    )
)

其实和array差不多,只是访问方式改变一点就行,我们一般习惯使用array['key']这种方式来访问数组。
对于这种stdClass来说,如上例,$weather->getWeatherbyCityNameResult->string[0]可以这样来访问属性,这个将得到结果“四川”。

3、实例化,new。

对比这两个代码:

<?php  
$a = array(1=>2,2=>3);
$a = (object)$a;
$a->id = '11 ';
$a->username = 'me';
print_r($a);
?>

将输出:stdClass Object ( [1] => 2 [2] => 3 [id] => 11 [username] => me ) 。

<?php  
$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 ) 。

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

需要注意的是,在函数里面使用global、static时遇new stdclass引用的情况,这时&new stdclass将会失效,应避免使用引用,直接用new stdclass。

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP4实际应用经验篇(1)
Oct 09 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
微信公众号开发之微信公共平台消息回复类实例
Nov 14 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
降低PHP Redis内存占用
Mar 23 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
PHP 传输会话curl函数的实例详解
Sep 12 PHP
PHP isset empty函数相关面试题及解析
Dec 11 PHP
php中explode的负数limit用法分析
Feb 27 #PHP
php数组键值用法实例分析
Feb 27 #PHP
php与Mysql的一些简单的操作
Feb 26 #PHP
PHP扩展开发入门教程
Feb 26 #PHP
分享一则PHP定义函数代码
Feb 26 #PHP
php简单分页类实现方法
Feb 26 #PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 #PHP
You might like
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
详解在vue-cli中使用路由
2017/09/25 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
同志主要表现材料
2014/08/21 职场文书
儿园租房协议书范本
2014/12/02 职场文书