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实现与ASP Banner组件相似的类
Oct 09 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
php mysql索引问题
Jun 07 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 PHP
php实例分享之mysql数据备份
May 19 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
php判断文件上传类型及过滤不安全数据的方法
Dec 17 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 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 移除数组重复元素的一点说明
2008/11/27 PHP
PHP 程序授权验证开发思路
2009/07/09 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
学习python中matplotlib绘图设置坐标轴刻度、文本
2018/02/07 Python
python使用zip将list转为json的方法
2018/12/31 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
Python decimal模块使用方法详解
2020/06/08 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
教育专业自荐书范文
2013/12/17 职场文书
期末自我鉴定
2014/01/23 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书
道歉信范文
2015/05/12 职场文书
毕业实习单位意见
2015/06/04 职场文书