开发者社区> 问答> 正文

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());
?>

展开
收起
落地花开啦 2016-06-17 16:02:18 3106 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    感觉还是用 ArrayAccess 吧, 最简单的数组形式访问对象,直接在你的类上实现该接口。反射之类的用在这有点不太好

    class Obj implements \ArrayAccess
    {
    }

    ArrayAccess 接口的结构,你的类必须要实现这些方法。

     ArrayAccess {
    /* 方法 */
    abstract public boolean offsetExists ( mixed $offset )
    abstract public mixed offsetGet ( mixed $offset )
    abstract public void offsetSet ( mixed $offset , mixed $value )
    abstract public void offsetUnset ( mixed $offset )
    }
    2019-07-17 19:42:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载