2011-08-08 14 views
3

multidim。配列は、次のようになります。ユニディメンショナル配列で多次元配列をソート

$arr = array(
    array(
    'id' => 'first', 
    'name' => 'John', 
    'age' => 17, 
), 

    array(
    'id' => 'second', 
    'name' => 'Mary', 
    'age' => 26, 
), 

    array(
    'id' => 'third', 
    'name' => 'Eve', 
    'age' => 21, 
), 

); 

などどのよう$arrソートされルックスを決定した配列:

$sort_by = array('third', 'first', 'second');

だから私は何をしたいのidフィールドに基づいて、第1の配列の要素をソートすることです2番目の配列。

この場合、第一の配列は次のようになります。/:

$arr = array(
    array(
    'id' => 'third', 
    'name' => 'Eve', 
    'age' => 21, 
), 

    array(
    'id' => 'first', 
    'name' => 'John', 
    'age' => 17, 
), 

    array(
    'id' => 'second', 
    'name' => 'Mary', 
    'age' => 26, 
), 


); 
+1

可能重複/stackoverflow.com/questions/6711548/sort-array-subkey-based-on-another-arrays-order) –

答えて

1
$sortedArray = array(); 
foreach($sort_by as $sort){ 
    foreach($arr as $val){ 
    if($val['id'] === $sort){ 
     $sortedArray[] = $val; 
    } 
    } 
} 

盗まれたから:(HTTP [別の配列の順序に基づいてソート配列サブキー]のSort Array Subkey Based on Another Array's Order

+0

代わりに質問を閉じるために投票する必要があります。 –

4
function sort_by_1d($item_1, $item_2) 
{ 
    $sort_by = array('third', 'first', 'second'); 
    $item_1_i = array_search($item_1['id'], $sort_by); 
    $item_2_i = array_search($item_2['id'], $sort_by); 
    return $item_1_i - $item_2_i; 
} 

usort($arr, 'sort_by_1d'); 
+0

+1の巧妙な解決策:-) –

+0

非常にエレガントな、ありがとう! – luminarious