1. 问答
  2. 问答详情

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

1个回答

0

采纳

用 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 )
 }


撰写答案

验证码
点击刷新