Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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_Array Multisort - Fatal编程技术网

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);