Сортируйте массив, используя тот же порядок другого

У меня есть 2 массива, содержащие стартовые руки в покер-холдем.

Один из них состоит из неупорядоченных значений.

$array1 = array("65s","AA","J9s","AA","32s"); //the cards can be repeated here as you see there are 2 "AA" 

и другой, который должен использоваться в качестве модели для заказа первого массива:

 $array_sorted = array("AA","KK","AKs"...); //here the cards are not repeated 

Я хотел бы переупорядочить $ array1 с сортировкой, используемой в $ array_sorted,

он должен возвращать массив вроде:

 $array1 = array("AA","AA","J9s","65s","32s"); 

Я не знаю, как это сделать. Возможно, используя некоторый «пользовательский метод сортировки»? На самом деле не знаю.

    Вы правы, и usort – это «пользовательский метод сортировки», который вы ищете. Что-то вроде этого должно сработать для вас:

    PHP> = 5.3

     // Firstly this will be faster if the hands are the keys in the array instead // of the values so we'll flip them with array_flip. $array_sorted = array_flip( array( 'AA', 'KK', 'AKs', /* ... */ ) ); // => array( 'AA' => 0, 'KK' => 1, 'AKs' => 2, ... ) // your hands $array1 = array( '65s', 'AA', 'J9s', 'AA', '32s' ); $array1_sorted = usort( $array1, // The comparison function function($a, $b) { // If $a is AA and $b is J9s then // $array_sorted[ 'AA' ] - $array_sorted[ 'J9s' ] // will evaluate to a negative number, telling PHP that $a (AA) // is "smaller" than $b (J9s) and so goes first. return $array_sorted[ $a ] - $array_sorted[ $b ]; } ); 

    PHP <5.3

     function sorting_function($a, $b){ $array_sorted = array_flip( array( 'AA', 'KK', 'AKs', /* ... */ ) ); return $array_sorted[ $a ] - $array_sorted[ $b ]; } $array1 = array( '65s', 'AA', 'J9s', 'AA', '32s' ); $array1_sorted = usort( $array1, 'sorting_function' );