2017-11-14 7 views
0

3つの配列を同じ順序で並べようとしましたが、3つの配列はすべて同じサイズですが、値は同じ順序ではありません。どのように私はそれらを同じ順序に並べ替えることができますか?3つの異なる配列を比較して同じ順序で配列する

最初の配列:

Array(
    [0] => Array([id] => 1) 
    [1] => Array([id] => 12) 
    [2] => Array([id] => 25) 
    [3] => Array([id] => 54) 
) 

二番目の配列:

Array(
    [0] => Array([id] => 24) 
    [1] => Array([id] => 12) 
    [2] => Array([id] => 54) 
    [3] => Array([id] => 1) 
) 

3番目の配列:

Array(
    [0] => Array([id] => 1) 
    [1] => Array([id] => 12) 
    [2] => Array([id] => 25) 
    [3] => Array([id] => 54) 
) 

Array(
    [0] => Array([id] => 54) 
    [1] => Array([id] => 25) 
    [2] => Array([id] => 1) 
    [3] => Array([id] => 12) 
) 

、最終的な配列の結果を予想

3つの配列はすべて最初の配列のように配置されています。私はたくさん試しましたが、うまくいきません。

+1

'私はロットを試しました'あなたのコードはどこですか? –

+0

なぜ同じアレイが3回必要ですか? – Pain67

+0

*すべての3つの配列は最初の配列のように配置されます* '$ arr3 = $ arr2 = $ arr1' – splash58

答えて

0

結果が最初の配列の順番になるように、最初の配列で配列をマルチソートしてみてください。 array_multisort($ arr2、$ arrone); array_multisort($ arr3、$ arrone);

0

指定された参照配列と同じ方法で配列された配列をすべて取得するには、usortのカスタム検索機能を使用できます。

function orderarrayByReferencearrayIds(array $referencearray, array $arrayToSort) { 
    // get an array with the id order of the reference array 
    $idOrder = array_column($referencearray, 'id'); 

    usort($arrayToSort, function (array $a, array $b) use ($idOrder) { 
     // get the index in reference sort order of each element 
     $aIndex = array_search($a['id'], $idOrder); 
     $bIndex = array_search($b['id'], $idOrder); 

     return $aIndex - $bIndex; 
    }); 

    return $arrayToSort; 
} 

ID配列 '24'が参照配列に存在しないため、これは2番目の配列では機能しません。

関連する問題