我有一个数组($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
}
我需要使用$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
}
我该怎么办? 我尝试使用multisort,array_map但没有成功。
答案 0 :(得分:9)
由于您已经按所需的排序顺序获得了ID,因此有效排序$images
的唯一障碍是无法在给定ID的情况下立即获取图像。所以让我们通过重新索引$images
来使用array_column
将id作为数组键来修复它(不要被名称抛出,它也可以用于重建索引):
// array_column is only available in PHP 5.5+
$images = array_column($images, null, 'id');
在此之后获得一个排序数组是微不足道的:
$sortedImages = [];
foreach ($sort as $id) {
$sortedImages[] = $images[$id];
}
对于PHP< 5.5你可以用{:1}}重新索引替换:
array_column
或者,您可以$imageIds = array_map(function($i) { return $i['id']; }, $images);
$images = array_combine($imageIds, $images);
自己的作者获得implementation written in PHP。
答案 1 :(得分:3)
试试这个 $最终=阵列();
foreach($sort as $key)
{
foreach($images as $img)
{
if($img['id'] == $key )
{
$final[]=$img;
}
}
}
print_r($final);