PHP对象转换为数组array(object) 数组值读取
PHP对象转换为数组array(object) 数组值读取
$objecta
class objecta {
protected $temp;
}
$arr = (array)$objecta;
$arr 怎样读取 temp值?
$arr['temp'],$arr['*temp'] 都读取不到
官方说明:
如果一个 object 类型转换为 array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问;私有变量前会加上类名作前缀;保护变量前会加上一个 '*' 做前缀。这些前缀的前后都各有一个 NULL 字符。这会导致一些不可预知的行为:
<?php
class A {
private $A; // This will become '\0A\0A'
}
class B extends A {
private $A; // This will become '\0B\0A'
public $AA; // This will become 'AA'
}
var_dump((array) new B());
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我觉得你应该实现ArrayAccess接口
我觉得还是类型的原因。
protect
和private
的属性本来就不能从外部获取到吧,我试了一下只有public
的属性能获取到。感觉还是用 ArrayAccess 吧, 最简单的数组形式访问对象,直接在你的类上实现该接口。反射之类的用在这有点怪怪的呢、
\ArrayAccess 接口的结构,你的类必须要实现这些方法。
小示例、
不好意思,回答时激情满满,写几行就枯燥了、后俩没注释你自己翻资料去吧、