2010-02-01 12 views
3
$a = array(0=>'a',1=>'b',2=>'c', 3=>'d'); 

나는 3,2,0,1로 순서를 변경하려면 :배열의 순서를 변경하는 방법은 무엇입니까?

$a = array(3=>'d',2=>'c',0=>'a', 1=>'b'); 
+1

다음과 같은 의미입니다. [array_reverse] (http://php.net/manual/en/function.array-reverse.php)? –

+0

아래의''uksort()' '로 내 대답을 확인하십시오. – maciek

답변

15

프로그래밍 순서를 변경하고자하는 경우는, 다양한 array sorting functions in PHP에서 봐 가지고, 특히

  • uasort() - 정렬 배열에서 사용자 정의 비교 함수를 사용하고 인덱스 연결을 유지합니다.
  • uksort() -

    $a = array(0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd'); 
    $b = array(3, 2, 0, 1); // rule indicating new key order 
    $c = array(); 
    foreach($b as $index) { 
        $c[$index] = $a[$index]; 
    } 
    print_r($c); 
    

    을 줄 것입니다 : - 사용자 정의 비교 함수
  • usort() 아래 Yannicks example을 기반으로 사용자 정의 비교 함수

를 사용하여 값에 의한 배열 정렬, 당신은 이런 식으로 할 수

Array([3] => d [2] => c [0] => a [1] => b) 

하지만 내가 의견에 말했듯이, 배열을 주문하거나 mor 귀하의 필요에 대해 구체적으로, 우리는 이것을 넘어서 당신을 도울 수 없습니다. 열거하는 항목의 순서가 보존되어있는 경우 여기

+0

아래의 'uasort()'를 사용하여 내 대답을 확인하십시오. – maciek

-3

krsort($a); 
+1

그는 주문을 취소하고 싶지 않습니다. '3,2,1,0'이 아닌'3,2,0,1'입니다. – Gordon

7

때문에 PHP의 배열이 실제로 정렬지도, 나는 확실하지 오전 방법이다.

당신은 단순히 특정 순서로 열거하려면 :

$a = array(0=>'a',1=>'b',2=>'c', 3=>'d'); 
$order = array(3, 2, 0, 1); 

foreach ($order as $index) 
{ 
    echo "$index => " . $a[$index] . "\n"; 
} 
+0

반복하는 것보다 다른 방법이 있습니까? – user198729

+5

정확히 무엇을하려고합니까? 왜냐하면 어떤 순서로 컬렉션을 열거하는 것 외에도 배열의 요소의 '순서'를 변경해야하는 또 다른 이유를 알 수 없기 때문입니다. –

5
function reorder_array(&$array, $new_order) { 
    $inverted = array_flip($new_order); 
    uksort($array, function($a, $b) use ($inverted) { 
    return $inverted[$a] > $inverted[$b]; 
    }); 
} 

$a = array(0=>'a',1=>'b',2=>'c', 3=>'d'); 
reorder_array($a, array(3, 2, 0, 1)); 

var_dump($a); 

결과 :

Array ([3] => d [2] => c [0] => a [1] => b) 
+1

이것은 참으로 훌륭합니다. 감사. –

0

uksort()와 함께 할 수있는 가장 쉬운 방법, 더 많은 기능 방법 :

$a = ['a','b','c','d']; 
$order = [3, 2, 0, 1]; 

uksort($a, function($x, $y) use ($order) { 
    return array_search($x, $order) > array_search($y, $order); 
}); 

print_r($a); // [3 → d, 2 → c, 0 → a, 1 → b] 
관련 문제