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 相关文章推荐
无数据库的详细域名查询程序PHP版(1)
Oct 09 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 PHP
PHP编程风格规范分享
Jan 15 PHP
yii中widget的用法
Dec 03 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
php文件缓存类用法实例分析
Apr 22 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
php强制下载文件函数
Aug 24 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
Sep 22 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
分享5个非常有用的Laravel Blade指令
May 30 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
joomla内置的表单验证功能使用方法
2010/06/11 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
9个JavaScript评级/投票插件
2010/01/18 Javascript
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
React简单介绍
2017/05/24 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
详解Python进程间通信之命名管道
2017/08/28 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
python的Tqdm模块的使用
2018/01/10 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python3爬取torrent种子链接实例
2020/01/16 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
财务支持类个人的自我评价
2014/02/14 职场文书
我的梦想演讲稿
2014/04/30 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
国际贸易专业求职信
2014/06/04 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python
DSP接收机前端设想
2022/04/05 无线电
HttpClient实现文件上传功能
2022/08/14 Java/Android