2011-08-08 4 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 배열해야한다 :

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

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

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


); 
+1

[또 다른 배열의 순서에 따라 정렬 배열 하위 키]의 중복 가능성 (HTTP ://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; 
    } 
    } 
} 

도난에서 : 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