PHP按键对数组按另一个数组排序(表)
我有一个数组作为表:PHP按键对数组按另一个数组排序(表),php,arrays,sorting,Php,Arrays,Sorting,我有一个数组作为表: $sortLikeThis = [ '5', '3', '7' '1', ]; $unsorted = [ [ 'sort' => '7', 'name' => 'Test', ], [ 'sort' => '1', 'name' => 'Test 2', ], [ 'sort' => '3'
$sortLikeThis = [
'5',
'3',
'7'
'1',
];
$unsorted = [
[
'sort' => '7',
'name' => 'Test',
],
[
'sort' => '1',
'name' => 'Test 2',
],
[
'sort' => '3',
'name' => 'Test 3',
],
[
'sort' => '5',
'name' => 'Test 4',
],
[
'sort' => '7',
'name' => 'Test 4',
],
]
我想通过排序键获得排序数组($unsorted),如$sortLikeThis
e、 g:
我应该使用什么?只需使用:
检查一下
提示:使用当前结构,您将为每个元素触发数组搜索()
(线性时间),这可能会很慢。因此,可以对其进行优化:
$sortLikeThis = array_flip($sortLikeThis);
usort($unsorted, function($x, $y) use ($sortLikeThis)
{
return $sortLikeThis[$x['sort']] - $sortLikeThis[$y['sort']];
});
由于是哈希表搜索,因此每次查找都将是
O(1)
。相关,但不重复,因为这是一个多维数组:
usort($unsorted, function($x, $y) use ($sortLikeThis)
{
return array_search($x['sort'], $sortLikeThis) - array_search($y['sort'], $sortLikeThis);
});
$sortLikeThis = array_flip($sortLikeThis);
usort($unsorted, function($x, $y) use ($sortLikeThis)
{
return $sortLikeThis[$x['sort']] - $sortLikeThis[$y['sort']];
});