Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP按键对数组按另一个数组排序(表)_Php_Arrays_Sorting - Fatal编程技术网

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']];
});