2016-10-04 10 views
0

PHPで特定の定義済みリストを使用して配列を並べ替える必要があります。例えばユーザー定義の注文を使った並べ替え配列

私はこの配列を持っている:

['red', 'yellow', 'green', 'black', 'orange', 'white'] 

この入力配列は、いくつかの機会に異なるかもしれませんが、すべての場合には、私はコースのみの配列エントリをシャッフル機能を(必要の順序存在する場合、入力配列は)唯一の2つのエントリを有していてもよく、この所定の順序以下:

['white', 'black', 'red', 'orange', 'yellow, 'green'] 

私、あなたは「その項目を検索しにそこに置かれている場合を使用しない限り、率直に言って、行う方法がわかりません最初の位置ition」..私はそれががらくたコード:)私はこれを行うには、組み込みの方法はないと思う

答えて

0

だと思いますが、あなたはあなたの優先順位に応じてそれをソートするusortを使用することができます。

usort($array, function($a, $b) { 
    $order = ['white', 'black', 'red', 'orange', 'yellow', 'green']; 
    $k1 = array_search($a, $order); 
    $k2 = array_search($b, $order); 
    return $k1 < $k2 ? -1 : +1; 
}); 
+0

5つのアイテムがある場合、どのようにコードを使用できますか? –

+0

これは任意の数の項目で動作します。どれくらいの数があっても、usortはもう一方のアイテムを処理します。 –

+0

この状態は変わるのですか? $ k1 <$ k2を返しますか? -1:+1; –

関連する問題