Php 在多维数组中使用数组\多重排序
我有一个具有这些值的数组Php 在多维数组中使用数组\多重排序,php,array-multisort,Php,Array Multisort,我有一个具有这些值的数组 array( 0 => 'D003', 1 => 'P001', 2 => 'P002', 3 => 'D001' ); 我有另一个多维数组B,它有这些值 array( 0 => array( 'waypoint_id' => 'D001', 'count' => '5'), 1 => array(
array(
0 => 'D003',
1 => 'P001',
2 => 'P002',
3 => 'D001'
);
我有另一个多维数组B,它有这些值
array(
0 =>
array(
'waypoint_id' => 'D001',
'count' => '5'),
1 =>
array(
'waypoint_id' => 'D003',
'count' => '1'),
2 =>
array(
'waypoint_id' => 'P001',
'count' => '2'),
3 =>
array(
'waypoint_id' => 'P002',
'count' => '1')
);
如何使用array_multisort,以便使我的数组B类似于这些(与数组B的顺序相同)
我不确定
array\u multisort()
是否能在这里帮助您,因为A的内容没有明显的顺序
为了提高效率,我会按照航路点为B建立索引,然后从a中创建一个新的$ordered
数组:
$indexed = array();
foreach($b as $array) {
$indexed[$array['waypoint_id']] = $array;
}
$ordered = array();
foreach($a as $waypoint) {
$ordered[] = $indexed[$waypoint];
}
是的,这很有效。我认为array_multisort可以用来解决这个问题。许多人喜欢这种方法+1.
$indexed = array();
foreach($b as $array) {
$indexed[$array['waypoint_id']] = $array;
}
$ordered = array();
foreach($a as $waypoint) {
$ordered[] = $indexed[$waypoint];
}
$result = array();
foreach ($A as $search) {
foreach ($B as $elt) {
if ($elt['waypoint_id'] === $search) {
array_push($result, $B);
break;
}
}
}
var_dump($result);