php对象数字属性,PHP获取对象的纯数字属性
##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获取对象的纯数字属性相关推荐
- 原生Js通过class属性值获取对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- php 判断字符是否是数字_php判断输入是否是纯数字,英文,汉字的方法
本文实例讲述了php判断输入是否是纯数字,英文,汉字的方法.分享给大家供大家参考.具体分析如下: 这里利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文.英汉混合.还是 ...
- php 判断同时存在英文跟数字,php判断输入是否是纯数字,英文,汉字的方法
本文实例讲述了php判断输入是否是纯数字,英文,汉字的方法.分享给大家供大家参考.具体分析如下: 这里利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文.英汉混合.还是 ...
- php判断一个字符串是否为纯数字,php判断变量是否为纯数字字符串的方法
在php中有时候需要判断一个变量的值是否为数字或是否为数字字符串,而php中也提供了一个很好用的内置函数 is_numeric(),可以很轻松的来检测变量. php is_numeric() 函数介绍 ...
- php读取excel的日期是数字,PHPExcel 解释 Excel日期得到纯数字 (含小数点) 的解决办法...
今天使用laravel-excel导入excel中的日期,得到了一组含小数点的数字,如下图 在excel里明明是一个日期 经查资料,有如下解说比方说,2015/5/20 15:47:37,文本格式为 ...
- ASCII码表中的数字和我们运算用的纯数字有何区别?
ASCII码表是一种字符编码方式,它将所有的大小写字母,数字,特殊字符等用一个字节(byte)来表示,比如我们定义:char i ="9",这里的9就是一个字符,不是数字,计算机中 ...
- jq获取字符串中的数字 jq如何获取id里的数字
我的每个id为 id1.id2.id3.... 每次我需要拿到id后面跟的数字 个人博客 http://www.sharedblog.cn/?post=215 <!-- 简单写几个按钮 --&g ...
- java根据属性获取对象_java反射工具类--通过指定属性名,获取/设置对象属性值
java对象通过点运算符操作对象属性的方式没法使用for,while等循环,此工具主要解决这一问题. 例如:有一对象包含属性有一定规律 obj1: { name1: "张三", a ...
- java通过反射获取对象的指定属性值(包括私有属性值和指定注解属性值)
通过反射机制,可以灵活地根据对象的属性名的字符串形式获取对象的属性值.当一个对象有多个属性的时候,只需要对其中的几个特定属性进行某种特殊处理,具体是哪个属性并不能提前确定,每个需要处理的属性的方法也不 ...
最新文章
- 从芯片到AI智能芯片,一文了解它的前世今生
- 336. Palindrome Pairs 回文对
- 关于C语言中的'\?'和%%
- 危险!!!也许你的web网站或服务正在悄无声息地被SQL注入
- 蓝桥杯历届试题----矩阵翻硬币
- C#LeetCode刷题之#645-错误的集合(Set Mismatch)
- android 查看gpu频率_借骁龙 855 Plus,聊聊 CPU / GPU 怎样影响手机游戏性能
- [转]更改windows 2003远程桌面连接的端口
- 配置IP SAN服务器搭建iscsi(协议)存储系统
- 网易云课堂 oracle,网易云课堂DBA学习笔记 (一) 数据库基础
- iOS11开发新增功能大全
- OpenGL ES 2.0 入门(持续更新)
- 基于JAVA实现的图形化页面置换算法
- VS2017 安装 Microsoft Visual Studio Installer Project
- 深入浅出理解类和对象
- 数据库-玩转数据-Oracle的表空间及表分区
- Uinapp中js修改css变量,【前端技术】uniapp操作dom,改变css样式
- AI内容生成时代:该如何和AI对话?
- Google趋势 - Google Trend in Chinese
- 有关树的常见算法汇总【持续更新中】
热门文章
- UVa834 Continued Fractions【连分数】
- I00009 用1生成回文数
- 中英文对照 —— 航空航天航海、交通运输工具
- 深度学习实战 Tricks —— 梯度消失与梯度爆炸(gradient exploding)
- matlab 高级函数 —— ind2sub、kron
- 实用的 Python —— os.system() 在 python 语句中执行 dos 命令
- 算法——从旋转字符串到翻转单词
- forward计算机语言,const_forward在C中的可选实现中做了什么?
- JAVA浮点数浮点数转换成人民币读法
- 启动Eclipse时,错误:WorkSpace Unavailable