2012-01-16 10 views
5

開始ポーカーホールデムハンドを含む2つの配列があります。他の配列と同じ順序で配列を並べ替える

1つは、順序付けられていない値で構成されます。

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

と最初の配列を注文するためのモデルとして使用する必要があり、他の1:

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

私は、

array_sorted $で使用されるソートと$の配列1次再したいのですが

のように、それは、配列を返す必要があります:私は完全にこれを実現する方法については考えている

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

。たぶん、いくつかの "ユーザー定義のソート方法"を使用して?本当にわからない。

+0

私は理解していません。あなたは単にアソートを望んでいないのですか? http://us2.php.net/manual/en/function.asort.php – MetalFrog

+0

私はasort()がそのトリックをするとは思わない、私は$ array_sortedで注文を使用して$ array1をソートする必要があります。 – KingBOB

+0

ああ、ちっちゃな、あなたはそれを捨てるだろう。 http://us2.php.net/usort – MetalFrog

答えて

7

あなたが正しいです。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'); 
+0

私はそれをテストしていますが、クラスのメソッドに使用しているので、このエラーが返されます。 構文解析エラー:予期しない構文エラー、/Applications/MAMP/www/class2.phpのT_FUNCTION行1312 – KingBOB

+0

あなたはPHPのバージョンを実行していますか? – afuzzyllama

+0

私は5.2.6を使用しています – KingBOB

関連する問題