php在数组中转换实现ArrayAccess的对象

当你在类上实现_toString方法时,你可以在字符串中转换对象

$string =(string) $object

有没有一个等效的数组转换

$array=(array) $object

从我测试的代码中,即使此对象实现ArrayAccess,objet的属性也会转换为数组的索引。

我期望使用数组访问来铸造一个对象,我会获得一个数组,它具有与我可以访问的对象相同的值

public function MyObject implements ArrayAccess{
     private $values;
     public function __construct(array $values){
        $this->values=$values;
     }
     public function offsetSet($name,$value){
        $this->values[$name]=$value;
     }
     //etc...
}

$myObject=new MyObject(array('foo'=>'bar');

$asArray=(array)$myObject;

print_r($asArray);
// expect array('foo'=>'bar')
// but get array('MyObjectvalues'=>array('foo'=>'bar'));

我也注意到本地ArrayObject类具有我期望的行为


不,没有魔术功能将对象作为数组进行投射。

ArrayObject是用C实现的,具有奇怪的特定行为。

实现自定义方法asArray并使用它。

链接地址: http://www.djcxy.com/p/64863.html

上一篇: php Converting an object implementing ArrayAccess in array

下一篇: Soap data gives Fatal error: Cannot use object of type stdClass as array in