如何使用第二个数组对第一个数组进行排序,第二个数组在第二个数组中排序键而不使用任何循环。
1st Array。
$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
)
答案 0 :(得分:1)
您可以使用array_map:
$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] =>
)
)
现在,如果您希望密钥为0,1,2 ...,您可以在映射后使用array_values:
$arr = array_values($arr);
输出:
Array
(
[0] => Array
(
[id] => 781
[order] => 3
[title] =>
)
[1] => Array
(
[id] => 212
[order] => 1
[title] => fdfdfdfdf
)
[2] => Array
(
[id] => 5
[order] => 2
[title] =>
)
)
答案 1 :(得分:0)
当然,没有这个功能。你必须做类似的事情
<?php
$chunk = [
// data
];
$sorted = [];
$sort = [
// ordered keys
];
foreach($sort as $keyToFind) {
foreach($chunk as $arrayElement) {
if($arrayElement['id'] == $keyToFind)) {
$sorted[$keyToFind] = $arrayElement;
}
}
}
正如你所看到的,由于这两个有着悠久性的前提,这有点时间和资源的消耗。我们希望你的阵列不是那么大