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 CLI实现简单的数据库实时监控调度
Jul 01 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
php中in_array函数用法分析
Nov 15 PHP
PHP中list()函数用法实例简析
Jan 08 PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 PHP
php的laravel框架快速集成微信登录的方法
Dec 12 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
详解Python的Django框架中的通用视图
2015/05/04 Python
python中循环语句while用法实例
2015/05/16 Python
分析python切片原理和方法
2017/12/19 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python流程控制常用工具详解
2020/02/24 Python
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
非常详细的C#面试题集
2016/07/13 面试题
美术国培研修感言
2014/02/12 职场文书
创先争优活动方案
2014/02/12 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
施工安全责任协议书
2016/03/23 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS
React中的Context应用场景分析
2021/06/11 Javascript
MySQL中的隐藏列的具体查看
2021/09/04 MySQL