如何按属性索引我的laravel集合
我有一个laravel集合,我已经按属性“名称”排序如何按属性索引我的laravel集合,laravel,sorting,indexing,collections,Laravel,Sorting,Indexing,Collections,我有一个laravel集合,我已经按属性“名称”排序 { "0":{"id":2,"name":"1","days":["2017-04-06","2017-04-07"]}, "1":{"id":3,"name":"2","days":["2017-04-08","2017-04-09"]}, "2":{"id":4,"name":"3","days":["2017-04-10","2017-04-11"]}, "6":{"id":10,"name":"4","days":["2017-04-
{
"0":{"id":2,"name":"1","days":["2017-04-06","2017-04-07"]},
"1":{"id":3,"name":"2","days":["2017-04-08","2017-04-09"]},
"2":{"id":4,"name":"3","days":["2017-04-10","2017-04-11"]},
"6":{"id":10,"name":"4","days":["2017-04-12","2017-04-13"]},
"3":{"id":5,"name":"5","days":["2017-04-14","2017-04-15"]},
"4":{"id":6,"name":"6","days":["2017-04-16","2017-04-17"]},
"5":{"id":7,"name":"7","days":["2017-04-18","2017-04-19"]}
}
但是,此集合的索引没有更改。指数现在是0,1,2,6,3,4,5。是否可以按照已排序集合的顺序对集合重新编制索引
所以我想要的是:
{
"0":{"id":2,"name":"1","days":["2017-04-06","2017-04-07"]},
"1":{"id":3,"name":"2","days":["2017-04-08","2017-04-09"]},
"2":{"id":4,"name":"3","days":["2017-04-10","2017-04-11"]},
"3":{"id":10,"name":"4","days":["2017-04-12","2017-04-13"]},
"4":{"id":5,"name":"5","days":["2017-04-14","2017-04-15"]},
"5":{"id":6,"name":"6","days":["2017-04-16","2017-04-17"]},
"6":{"id":7,"name":"7","days":["2017-04-18","2017-04-19"]}
}
我尝试使用$collection->values()
。但我只剩下:
[
{"id":2,"name":"1","days":["2017-04-06","2017-04-07"]},
{"id":3,"name":"2","days":["2017-04-08","2017-04-09"]},
{"id":4,"name":"3","days":["2017-04-10","2017-04-11"]},
{"id":10,"name":"4","days":["2017-04-12","2017-04-13"]},
{"id":5,"name":"5","days":["2017-04-14","2017-04-15"]},
{"id":6,"name":"6","days":["2017-04-16","2017-04-17"]},
{"id":7,"name":"7","days":["2017-04-18","2017-04-19"]}
]
可以对集合使用values()重置索引:
$resetedIndexesCollection = $yourcollection->values();
values方法返回一个新集合,其中键重置为
连续整数
在您的情况下,由于没有集合而无法工作,您有一个json,首先您需要对它进行json\u解码
以创建数组
,然后收集数组,现在您有了集合,可以应用values()方法重置索引,如下所示:
collect(json_decode('{
"0":{"id":2,"name":"1","days":["2017-04-06","2017-04-07"]},
"1":{"id":3,"name":"2","days":["2017-04-08","2017-04-09"]},
"2":{"id":4,"name":"3","days":["2017-04-10","2017-04-11"]},
"3":{"id":10,"name":"4","days":["2017-04-12","2017-04-13"]},
"4":{"id":5,"name":"5","days":["2017-04-14","2017-04-15"]},
"5":{"id":6,"name":"6","days":["2017-04-16","2017-04-17"]},
"6":{"id":7,"name":"7","days":["2017-04-18","2017-04-19"]}
}'))->values();
结果是:
Collection {#287 ▼
#items: array:7 [▼
0 => {#288 ▼
+"id": 2
+"name": "1"
+"days": array:2 [▶]
}
1 => {#407 ▼
+"id": 3
+"name": "2"
+"days": array:2 [▶]
}
2 => {#408 ▼
+"id": 4
+"name": "3"
+"days": array:2 [▶]
}
3 => {#409 ▼
+"id": 10
+"name": "4"
+"days": array:2 [▶]
}
4 => {#410 ▼
+"id": 5
+"name": "5"
+"days": array:2 [▶]
}
5 => {#411 ▼
+"id": 6
+"name": "6"
+"days": array:2 [▶]
}
6 => {#412 ▼
+"id": 7
+"name": "7"
+"days": array:2 [▶]
}
]
}
检查此处的文档:
collection = collect([5, 3, 1, 2, 4]);
$sorted = $collection->sort();
$sorted->values()->all();