2017-05-23 20 views
-1

私は2つの配列を持っていて、もう一方を並べ替える必要があります。順序付き配列のキーと値を別の配列値で並べ替え

配列を値としてカテゴリがあります。

$order = array(
     0 => 12, 
     1 => 14, 
     2 => 15, 
     3 => 17, 
     4 => 20 
    ); 

私はソートする必要がある配列は、キーと値としてcategorieとして固有のIDを持っており、カテゴリは重複を持っている:

$array = array(
    432 => 20, 
    433 => 20, 
    235 => 15, 
    543 => 17, 
    564 => 17, 
    879 => 14, 
    125 => 12, 
    987 => 12, 
    453 => 20 
); 

必要なものは、ソートされたIDをキーまたは値として持つ配列です(推奨):

// sorted as keys 
$sorted = array(
    125 => 12, 
    987 => 12, 
    879 => 14, 
    235 => 15, 
    543 => 17, 
    564 => 17, 
    432 => 20, 
    433 => 20, 
    453 => 20 
); 


// or sorted as values 
$sorted = array(
    0 => 125, 
    1 => 987, 
    2 => 879, 
    3 => 235, 
    4 => 543, 
    5 => 564, 
    6 => 432, 
    7 => 433, 
    8 => 453 
); 
+0

不明な質問。 – ChintanThummar

答えて

-1

これはwhですあなたの持っている:

$array = array(
432 => 20, 
433 => 20, 
235 => 15, 
543 => 17, 
564 => 17, 
879 => 14, 
125 => 12, 
987 => 12, 
453 => 20 
); 

この必要性は、このように処理される:降順にキーでソート$sorted = ksort($array);

  • は、配列を取得するには:

    1. が昇順でキーでソート配列を取得するには$sorted = krsort($array);
  • +0

    $ orderのcategorie idsは、常に値でソートされているわけではありません! – lichtscheu

    +0

    @lichtscheu私はあなたの質問を誤解したと思います。 – ChintanThummar

    0

    最初の並べ替え配列キー昇順で$order配列に基づいてuasortを実行します。

    ksort($array); 
    uasort($array, function($a, $b) use ($order) { 
        return (array_search($a, $order) < array_search($b, $order)) ? -1 : 1; 
    }); 
    
    print '<pre>'; 
    print_r($array); 
    
    関連する問題