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
并使用它。
上一篇: php Converting an object implementing ArrayAccess in array
下一篇: Soap data gives Fatal error: Cannot use object of type stdClass as array in