- 此问题在此处已有答案**:
Sorting a php array of arrays by custom order(8个答案)
4天前关闭。
我有一个数组($sort)
,如下所示:
[1]=>16701
[2]=>16861
[3]=>16706
以及一个数组($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
}
我需要使用$sort
,基于值"id"
对$images
进行排序,因此结果应该是
[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
}
我该怎么做呢?我试过使用多重排序,array_map,但是没有成功。
3条答案
按热度按时间vs3odd8k1#
既然已经有了想要的排序顺序的id,那么对
$images
进行有效排序的唯一障碍就是无法立即获取给定id的图像。因此,让我们使用array_column
重新索引$images
,将id用作数组键(不要被名称抛出,它也可以用于重新索引)来解决这个问题:在此之后,获取一个排序数组就很简单了:
对于PHP〈5.5,你可以用以下代码替换
array_column
重索引:或者,您可以获得
array_column
作者自己的implementation written in PHP。xytpbqjk2#
试试这个:
2guxujil3#
在PHP7+中,可以使用
usort
和一个使用shipper操作符的匿名比较函数,根据另一个数组描述的另一个数组直接对输入数组进行就地排序