根据PHP上的另一个数组对数组的元素进行排序

根据PHP上的另一个数组对数组的元素进行排序,php,arrays,sorting,Php,Arrays,Sorting,考虑到一个数组的元素比另一个数组的元素少,如何根据另一个数组对数组进行排序 // correct order $order = ['aaa', 'ccc', 'bbb']; // my array $items = [ 'key_one' => 'ccc', 'key_two' => 'aaa', 'key_three' => 'ccc', 'key_four' => 'bbb', 'key_five' => 'aaa' ]

考虑到一个数组的元素比另一个数组的元素少,如何根据另一个数组对数组进行排序

// correct order
$order = ['aaa', 'ccc', 'bbb'];

// my array
$items = [
    'key_one' => 'ccc',
    'key_two' => 'aaa',
    'key_three' => 'ccc',
    'key_four' => 'bbb',
    'key_five' => 'aaa'
];

// the result I want
$items = [
    'key_two' => 'aaa',
    'key_five' => 'aaa'
    'key_one' => 'ccc',
    'key_three' => 'ccc',
    'key_four' => 'bbb'
];

我尝试过使用array\u merge和array\u combine,但键数不同,我不知道如何操作。

使用以下代码:

try to use the code below

$items = [
        'key_one' => 'ccc',
        'key_two' => 'aaa',
        'key_three' => 'ccc',
        'key_four' => 'bbb',
        'key_five' => 'aaa'
    ];
    $order = ['aaa', 'ccc', 'bbb'];
    $newArray = [];
    foreach ($order as $order) {
        foreach($items as $key => $item){
            if($item == $order){
                $newArray[$key] = $item;
            }
        }
    }
    print_r($newArray);
 $items = [
    'key_one' => 'ccc',
    'key_two' => 'aaa',
    'key_three' => 'ccc',
    'key_four' => 'bbb',
    'key_five' => 'aaa'
];

function list_cmp($a, $b) 
{ 
 $order = ['aaa', 'ccc', 'bbb'];

  foreach($order as $key => $value) 
    { 
      if($a==$value) 
        { 
          return 0; 
          break; 
        } 

      if($b==$value) 
        { 
          return 1; 
          break; 
        } 
    } 
} 

uasort($items, "list_cmp"); 

print_r($items);

asort的问题在于它是按字母顺序排列的,而不是按照我建立的顺序。asort返回aaa,bbb,ccc,而不是aaa,ccc,bbb。很好,您需要通过另一个数组附加该数组。结果是:数组([key\u-two]=>aaa[key\u-five]=>aaa[key\u-one]=>ccc[key\u-three]=>ccc[key\u-four]=>bbb)