是否可以从Laravel集合中返回对象?
$originalArr =[
'foo' =>'bar',
'foo2' => 'bar2'
]
$coll=collect($originalArr)->reject(function($item){
// do something
});
// now I can convert the collection to an array... but to an object?
$arr = $coll->toArray();
// array
dump($arr)
// but what if I want to have an object ? I have to do
$object = (object) $arr;
dump ($object)
//So you can access the attributes like $object->foo.
但这似乎很愚蠢……首先创建一个集合,然后转换为数组,然后再次转换为对象。
有没有更有效的方法?
修改
好吧,我输入一个数组会得到一个数组,但是如果我输入一个对象怎么办?
$origalObject = (object) $originalArr =[
'foo' =>'bar',
'foo2' => 'bar2'
];
...并做同样的事情,laravel会给我一个数组。 而且我必须再次将其转换为对象。如果处理对象,那将是很多额外的代码。当然,我可以为此构建一个简单的函数,但是为什么不在Laravel中构建它?
答案 0 :(得分:0)
toArray()
method不是强制转换,实际上只是返回内部数组(在检查Arrayable
元素之后)。
因此,即使集合具有toObject()
方法,也将像在代码中一样简单地return (object)$this->toArray().
。
您可以创建一个推送请求并将其添加为一种便捷方法,但是您应该首先创建一个问题,看看是否有人对此感兴趣。
或者,对于像您的示例这样的简单情况,您可以只使用默认的PHP数组函数(例如array_filter
),这样您就少了一步。