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 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
Nov 07 PHP
php中使用sftp教程
Mar 30 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 PHP
Laravel5.1框架注册中间件的三种场景详解
Jul 09 PHP
PHP CURL实现模拟登陆并上传文件操作示例
Jan 02 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
一端时间轮换的广告
2006/06/26 Javascript
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
理解javascript封装
2016/02/23 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
vue中的过滤器实例代码详解
2019/06/06 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
Scrapy的简单使用教程
2017/10/24 Python
python 美化输出信息的实例
2018/10/15 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
歌颂祖国演讲稿
2014/05/04 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
叶问观后感
2015/06/15 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android