【发布时间】:2014-04-28 08:13:25
【问题描述】:
是否可以传入array_column 一个对象数组?
我已经实现了ArrayAccess接口,但是没有效果。
我应该实施另一个吗?
class Foo implements ArrayAccess {
public $Id, $Title;
public function offsetExists($offset)
{
return isset($this->{$offset});
}
public function offsetGet($offset)
{
return $this->{$offset};
}
public function offsetSet($offset, $value)
{
$this->{$offset} = $value;
}
public function offsetUnset($offset)
{
unset($this->{$offset});
}
}
$object = new \Foo();
$object->Id = 1;
$object->Title = 'Test';
$records = array(
$object,
array(
'Id' => 2,
'Title' => 'John'
)
);
var_dump(array_column($records, 'Title')); // array (size=1) 0 => string 'John' (length=4)
【问题讨论】:
-
如何创建一个自定义函数来为您执行此操作? Array_column 仅针对数组,虽然实现了 ArrayAccess,但 array_column 是 php 的内置函数,因此很难确定该函数的确切工作原理。
-
您希望返回什么?
-
@Anthony,我希望得到相同的结果,就好像它只是一个数组而不是对象一样。换句话说,我希望返回属性“Title”。
-
可以通过
$array = json_decode(json_encode($array), TRUE);将对象数组转换为列数组
标签: php