2011-05-03 7 views
4

키의 수가 알려지지 않은 경우 마지막 키의 값으로 배열을 정렬하는 방법을 알아 내려고합니다.php - 배열의 마지막 키 값으로 정렬 하시겠습니까?

그래서, 다음과 같이 배열이있는 경우 :

  • 주세페 곤잘레스 옥타비오 에르난데스
  • 밥 A :

    Array(
        [0] => Array(
         [0] => Bob 
         [1] => A 
         [2] => Parker 
    ) 
        [1] => Array(
         [0] => John 
         [1] => Smith-Doe 
    ) 
        [2] => Array(
         [0] => Giuseppe 
         [1] => Gonzalez 
         [2] => Octavio 
         [3] => Hernandez 
    ) 
    ) 
    

    내가 배열의 마지막 값을 정렬 할을 파커

  • John Smith-Doe

답변

5
$arr = array(
    array('Bob', 'A', 'Parker'), 
    array('John', 'Smith-Doe'), 
    array('Giuseppe', 'Gonzalez', 'Octavio', 'Hernandez') 
); 

usort($arr, 'sort_by_last_item'); 

var_dump($arr); 

function sort_by_last_item($a, $b) 
{ 
    return end($a) > end($b); 
} 

가 나 :

$arr = array(
    array('Bob', 'A', 'Parker'), 
    array('John', 'Smith-Doe'), 
    array('Giuseppe', 'Gonzalez', 'Octavio', 'Hernandez') 
); 

usort($arr, function($a, $b) { return end($a) > end($b); }); 

var_dump($arr); 
+0

+1 코드의 단순함. – Flipper

+0

+1 좋은 답변 (그리고 내가 람다를위한 두 번째 시간이 될 수 있다면) –

1
양자 택일로 89,

:

$data = array(/* your data */); 
$output = array(); 

foreach ($data as $v) { 
    $key = implode(' ', array_reverse($v)); 
    $output[ $key ] = $v; 
} 

ksort($output); 

var_dump($output); 

두 번째 방법을 사용하면 마지막 요소에 의해 많은 같은 마지막 요소 레코드와 종류를 가질 수 있도록, 그들이 경우는 동일 - 종류의 첫번째 지난 전에 등등 ...

당신이 PHP 5.3 사용하는 경우
0

을이 작동 :

function array_last_item_sort($array){ 
    $return = array(); 
    $sort = array(); 

    foreach($array as $i => $item){ 
     $sort[$i] = $item[count($item) - 1]; 
    } 

    asort($sort); 

    foreach($sort as $i => $value){ 
     $return[] = $array[$i]; 
    } 

    return $return; 
} 
관련 문제