Php 使用具有已排序键的另一个数组对数组进行排序
如何使用第二个数组对第一个数组进行排序,第二个数组在第二个数组中有已排序的键,而不使用任何循环 第一阵列Php 使用具有已排序键的另一个数组对数组进行排序,php,arrays,sorting,Php,Arrays,Sorting,如何使用第二个数组对第一个数组进行排序,第二个数组在第二个数组中有已排序的键,而不使用任何循环 第一阵列 $chunk = array( [0] => Array ( [id] => 212 [order] => 1 [title] => fdfdfdfdf
$chunk = array(
[0] => Array
(
[id] => 212
[order] => 1
[title] => fdfdfdfdf
)
[1] => Array
(
[id] => 5
[order] => 2
[title] =>
)
[2] => Array
(
[id] => 781
[order] => 3
[title] =>
)
)
第二个数组,具有第一个数组的已排序键
$sort = array
(
[2] => 2
[0] => 0
[1] => 1
)
当然,这没有任何功能。你必须做类似的事情
<?php
$chunk = [
// data
];
$sorted = [];
$sort = [
// ordered keys
];
foreach($sort as $keyToFind) {
foreach($chunk as $arrayElement) {
if($arrayElement['id'] == $keyToFind)) {
$sorted[$keyToFind] = $arrayElement;
}
}
}
正如你所见,这是一个有点时间和资源消耗,因为两个叠瓦的前额。希望您的阵列不是那么大您可以使用它:
$arr = array_map(function($val) use($chunk){
return $chunk[$val];
}, $sort);
这是输出:
Array
(
[2] => Array
(
[id] => 781
[order] => 3
[title] =>
)
[0] => Array
(
[id] => 212
[order] => 1
[title] => fdfdfdfdf
)
[1] => Array
(
[id] => 5
[order] => 2
[title] =>
)
)
Array
(
[0] => Array
(
[id] => 781
[order] => 3
[title] =>
)
[1] => Array
(
[id] => 212
[order] => 1
[title] => fdfdfdfdf
)
[2] => Array
(
[id] => 5
[order] => 2
[title] =>
)
)
现在,如果希望键为0,1,2…,可以在映射后使用:
$arr = array_values($arr);
以及输出:
Array
(
[2] => Array
(
[id] => 781
[order] => 3
[title] =>
)
[0] => Array
(
[id] => 212
[order] => 1
[title] => fdfdfdfdf
)
[1] => Array
(
[id] => 5
[order] => 2
[title] =>
)
)
Array
(
[0] => Array
(
[id] => 781
[order] => 3
[title] =>
)
[1] => Array
(
[id] => 212
[order] => 1
[title] => fdfdfdfdf
)
[2] => Array
(
[id] => 5
[order] => 2
[title] =>
)
)
你想要什么样的输出。尽可能为你的问题提供更多细节。你是如何获得第二个阵列的?也许此时您已经可以对第一个数组进行排序了。您可以使用,如下所示:。如果是这样的话,那么可能是dup?:谢谢,这就是我想要的。请解释一下use关键字的匿名函数在做什么。@amitsigh array\u map为给定数组中的每个元素调用回调。那在文件里。现在,使用部分在那里,因为我们在一个函数中,它是一个不同的范围,所以从技术上讲,我们不能访问外部变量。当我们添加use时,给定的变量就可以访问了。