##php的对象属性 我们知道获取php的对象属性用箭头:

echo $obj->name;

如果属性名是一个变量,那么可以用:

$var = 'name';

echo $obj->$var;

考虑如下的结构,是一个MongoDB的BSON Object:

stdClass Object

(

[_id] => 711

[1] => stdClass Object

(

[win] => 8372907

)

)

echo $obj->_id; // ok

foreach ([1,2,3] as $k) {

echo $obj->$k; // error: Undefined property: stdClass::$1

}

这类结构在JSON/BSON转换为php对象时很容易碰到,直接获取时会报错的(linux x64 php7.1提示错误,windows 32 php7.2 可以正常获取) 测试发现,直接赋值的属性可以直接读取:

$obj = new stdClass();

$obj->{1} = 'attrName is 1';

$obj->{"1abc"} = 'attrName is 1abc';

$obj2 = new stdClass();

$var = "2xyz";

$obj2->$var = "attrName is 2xyz";

$var = 100;

$obj2->$var = $obj;

var_dump($obj);

var_dump($obj2->$var); // get $obj2->100

结果:

stdClass Object

(

[1] => attrName is 1

[1abc] => attrName is 1abc

)

stdClass Object

(

[1] => attrName is 1

[1abc] => attrName is 1abc

)

而从MongodbDriver 获取的 BSON 对象则会报错。

获取PHP 对象属性的值

array get_object_vars ( object $obj )

返回由 obj 指定的对象中定义的属性组成的关联数组。 BSON对象数字键属性获取:

// BSON $obj

foreach ([1,2,3] as $k) {

print_r(get_object_vars($obj)[$k]);

}

总结

编程语言是一门活到老学到老的艺术,一直自诩PHP熟练,却仍然有数不尽的知识盲点。

php对象数字属性,PHP获取对象的纯数字属性相关推荐

  1. 原生Js通过class属性值获取对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. php 判断字符是否是数字_php判断输入是否是纯数字,英文,汉字的方法

    本文实例讲述了php判断输入是否是纯数字,英文,汉字的方法.分享给大家供大家参考.具体分析如下: 这里利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文.英汉混合.还是 ...

  3. php 判断同时存在英文跟数字,php判断输入是否是纯数字,英文,汉字的方法

    本文实例讲述了php判断输入是否是纯数字,英文,汉字的方法.分享给大家供大家参考.具体分析如下: 这里利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文.英汉混合.还是 ...

  4. php判断一个字符串是否为纯数字,php判断变量是否为纯数字字符串的方法

    在php中有时候需要判断一个变量的值是否为数字或是否为数字字符串,而php中也提供了一个很好用的内置函数 is_numeric(),可以很轻松的来检测变量. php is_numeric() 函数介绍 ...

  5. php读取excel的日期是数字,PHPExcel 解释 Excel日期得到纯数字 (含小数点) 的解决办法...

    今天使用laravel-excel导入excel中的日期,得到了一组含小数点的数字,如下图 在excel里明明是一个日期 经查资料,有如下解说比方说,2015/5/20  15:47:37,文本格式为 ...

  6. ASCII码表中的数字和我们运算用的纯数字有何区别?

    ASCII码表是一种字符编码方式,它将所有的大小写字母,数字,特殊字符等用一个字节(byte)来表示,比如我们定义:char i ="9",这里的9就是一个字符,不是数字,计算机中 ...

  7. jq获取字符串中的数字 jq如何获取id里的数字

    我的每个id为 id1.id2.id3.... 每次我需要拿到id后面跟的数字 个人博客 http://www.sharedblog.cn/?post=215 <!-- 简单写几个按钮 --&g ...

  8. java根据属性获取对象_java反射工具类--通过指定属性名,获取/设置对象属性值

    java对象通过点运算符操作对象属性的方式没法使用for,while等循环,此工具主要解决这一问题. 例如:有一对象包含属性有一定规律 obj1: { name1: "张三", a ...

  9. java通过反射获取对象的指定属性值(包括私有属性值和指定注解属性值)

    通过反射机制,可以灵活地根据对象的属性名的字符串形式获取对象的属性值.当一个对象有多个属性的时候,只需要对其中的几个特定属性进行某种特殊处理,具体是哪个属性并不能提前确定,每个需要处理的属性的方法也不 ...

最新文章

  1. 从芯片到AI智能芯片,一文了解它的前世今生
  2. 336. Palindrome Pairs 回文对
  3. 关于C语言中的'\?'和%%
  4. 危险!!!也许你的web网站或服务正在悄无声息地被SQL注入
  5. 蓝桥杯历届试题----矩阵翻硬币
  6. C#LeetCode刷题之#645-错误的集合(Set Mismatch)
  7. android 查看gpu频率_借骁龙 855 Plus,聊聊 CPU / GPU 怎样影响手机游戏性能
  8. [转]更改windows 2003远程桌面连接的端口
  9. 配置IP SAN服务器搭建iscsi(协议)存储系统
  10. 网易云课堂 oracle,网易云课堂DBA学习笔记 (一) 数据库基础
  11. iOS11开发新增功能大全
  12. OpenGL ES 2.0 入门(持续更新)
  13. 基于JAVA实现的图形化页面置换算法
  14. VS2017 安装 Microsoft Visual Studio Installer Project
  15. 深入浅出理解类和对象
  16. 数据库-玩转数据-Oracle的表空间及表分区
  17. Uinapp中js修改css变量,【前端技术】uniapp操作dom,改变css样式
  18. AI内容生成时代:该如何和AI对话?
  19. Google趋势 - Google Trend in Chinese
  20. 有关树的常见算法汇总【持续更新中】

热门文章

  1. UVa834 Continued Fractions【连分数】
  2. I00009 用1生成回文数
  3. 中英文对照 —— 航空航天航海、交通运输工具
  4. 深度学习实战 Tricks —— 梯度消失与梯度爆炸(gradient exploding)
  5. matlab 高级函数 —— ind2sub、kron
  6. 实用的 Python —— os.system() 在 python 语句中执行 dos 命令
  7. 算法——从旋转字符串到翻转单词
  8. forward计算机语言,const_forward在C中的可选实现中做了什么?
  9. JAVA浮点数浮点数转换成人民币读法
  10. 启动Eclipse时,错误:WorkSpace Unavailable