top*_*rts 2 php arrays sorting
我有一个($sort)看起来像这样的数组:
[1]=>16701
[2]=>16861
[3]=>16706
Run Code Online (Sandbox Code Playgroud)
和一个数组($images),看起来像:
[0]=>
array(4) {
["href"]=> string(35) "mystring"
["url"]=> string(67) "mystring2"
["didascalia"]=> string(29) "mystring3"
["id"]=> 16861
}
[1]=>
array(4) {
["href"]=> string(35) "mystring"
["url"]=> string(70) "mystring2"
["didascalia"]=> string(37) "mystring3"
["id"]=> 16706
}
[2]=>
array(4) {
["href"]=> string(35) "mystring"
["url"]=> string(66) "mystring2"
["didascalia"]=> string(24) "mystring3"
["id"]=> 16701
}
Run Code Online (Sandbox Code Playgroud)
我需要排序$images基于价值,"id"使用$sort.所以我的结果应该是
[0]=>
array(4) {
["href"]=> string(35) "mystring"
["url"]=> string(66) "mystring2"
["didascalia"]=> string(24) "mystring3"
["id"]=> 16701
}
[1]=>
array(4) {
["href"]=> string(35) "mystring"
["url"]=> string(67) "mystring2"
["didascalia"]=> string(29) "mystring3"
["id"]=> 16861
}
[2]=>
array(4) {
["href"]=> string(35) "mystring"
["url"]=> string(70) "mystring2"
["didascalia"]=> string(37) "mystring3"
["id"]=> 16706
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?我尝试使用multisort,array_map但没有成功.
既然你已经拥有所需的排序顺序的ID,以排序的唯一屏障$images有效是无法立即获取给予其ID的图像.因此,我们进行了修复,通过重建索引$images使用id作为使用数组键array_column(不要被名称抛出,也可用于重建索引):
// array_column is only available in PHP 5.5+
$images = array_column($images, null, 'id');
Run Code Online (Sandbox Code Playgroud)
在此之后获得排序数组是微不足道的:
$sortedImages = [];
foreach ($sort as $id) {
$sortedImages[] = $images[$id];
}
Run Code Online (Sandbox Code Playgroud)
对于PHP <5.5,您可以用以下方法替换array_column重建索引:
$imageIds = array_map(function($i) { return $i['id']; }, $images);
$images = array_combine($imageIds, $images);
Run Code Online (Sandbox Code Playgroud)
或者,您可以获得他自己的作者用PHP编写的实现array_column.
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |