我有一个像这样的集合
$collection = [
1 => [
...
],
2 => [
...
],
3 = [
...
]
];
按我要排序的数组
$sort =[
3, 1, 2
];
我试图了解如何使用这样的代码对$collection
进行排序
$collection->sortBy(function($unit, $id) use ($sort) {
return ...;
})
但是我自己无法想象,我已经有了工作的例子,我只是预先处理所有$ collection元素,并通过我可以“正常”排序的方式为它们分配一些int,但如果可能的话,它对我来说仍然很有趣按另一个数组排序,而不将其他键分配给集合元素。
答案 0 :(得分:2)
你的意思是krsort
http://php.net/manual/en/function.krsort.php
krsort($collection);
foreach ($collection as $key => $val) {
echo "$key = $val\n";
}
答案 1 :(得分:1)
Laravel集合包括一个map()
方法来处理这样的事情。
https://laravel.com/docs/5.4/collections#method-map
也可能值得查看mapWithKeys()
方法。
这些方法允许您传入一个集合并迭代它,将每次迭代传递给您定义的回调函数。
答案 2 :(得分:0)
解决方案
$sort
->mapWithKeys(
function($id) use ($collection) {
return [
$id => $collection->get('id', $id)
];
}
)