在Laravel中将数组转换为集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Laravel中将数组转换为集合相关的知识,希望对你有一定的参考价值。
我在php中有以下数组:
[
{
"website": "example",
"url": "example.com"
},
{
"website": "example",
"url": "example.com"
}
]
现在我想把它转换成一个集合,所以我按键website
或url
排序。但是当我这样做时:
$myArray = collect(websites);
我得到了这个:
{
"0": {
"website": "example",
"url": "example.com"
},
"1": {
"website": "example",
"url": "example.com"
}
}
并且排序不起作用,我想知道我做错了什么以及如何修复它所以我有一个我可以轻松排序的对象的数组集合。
编辑:我希望输出与此相同:
[
{
"website": "example",
"url": "example.com"
},
{
"website": "example",
"url": "example.com"
}
]
通过“排序不起作用”我的意思是项目没有排序。
答案
如果你有
$collection = collect([
(object) [
'website' => 'twitter',
'url' => 'twitter.com'
],
(object) [
'website' => 'google',
'url' => 'google.com'
]
]);
然后,将您的数组包装在Collection类的实例中。这意味着它的行为不像典型的数组( - 它将像数组一样,但不要像对待它一样 - )直到你在它上面调用all()
或toArray()
。要删除任何添加的索引,您需要使用values()
。
$sorted = $collection->sortBy('website');
$sorted->values()->all();
预期产量:
[
{#769
+"website": "google",
+"url": "google.com",
},
{#762
+"website": "twitter",
+"url": "twitter.com",
},
]
请参阅文档https://laravel.com/docs/5.1/collections#available-methods
toArray
方法将集合转换为普通的PHP数组。如果集合的值是Eloquent模型,则模型也将转换为数组。
all
方法返回集合表示的底层数组。
以上是关于在Laravel中将数组转换为集合的主要内容,如果未能解决你的问题,请参考以下文章