[PHP] 배열 요소의 순서를 반대로 정렬해보자 feat. ARRAY_REVERSE

PHP 배열을 이래저래 다루다 보면 자주는 아니지만 꼭 한번 씩은 쓰게 되는 array_reverse 함수에 대해 정리해봅니다.

배열

아래와 같은 배열이 있다고 해봅시다.

$arr = array( 'a', 'b', 'c' );

원래 이 배열의 실제 모양은 아래와 같습니다.

$arr = array( 
  [0] => 'a', 
  [1] => 'b', 
  [2] => 'c' 
);

array_reverse

이 배열의 순서를 뒤집어 a, b, c 순서가 아니라 c, b, a 로 바꾸기 위해 array_reverse 함수를 이용하는 것입니다.

기본적으로 array_reverse 함수는 두 개의 인수를 가집니다.

array_reverse(array $array, bool $preserve_keys = false): array
  • 첫 번째 인수는 요소의 순서를 뒤바꿀 대상이 되는 배열이며(필수)
  • 두 번째는 키 값의 순서는 유지할 것인가에 대한 인수로(선택) 기본 값은 false

입니다.

예제1

실제로 array_reverse 를 이용해 배열 요소의 순서를 뒤집어 봅시다.

$arr = array( 'a', 'b', 'c' );

$arr = array_reverse( $arr );

이렇게 되면 $arr 은 아래와 같이 바뀝니다.

$arr = array( 'c', 'b', 'a' );

$arr = array( 
  [0] => 'c', 
  [1] => 'b', 
  [2] => 'a' 
);

예상한 딱 그 모양 그대로 나옵니다. 여기에 만약 $preserve_keystrue 로 투입한다면?

$arr = array( 
  [2] => 'c', 
  [1] => 'b', 
  [0] => 'a' 
);

이런 결과를 볼 수 있을 것입니다.

예제2

사실 제가 진짜 궁금했던 것은 아래입니다.

$arr = array( 
  [a] => array( 1, 2, 3 ), 
  [b] => array( 4, 5, 6 ), 
);

이런 배열에 array_reverse 를 적용하면 과연 하위 배열의 순서도 바뀔까? 였는데, 실제로 해보니 하위 배열의 요소들은 원래의 순서를 유지하네요.

즉 위 배열에 array_reverse 를 적용하면 아래와 같은 결과를 볼 수 있습니다.

$arr = array( 
  [b] => array( 4, 5, 6 ),
  [a] => array( 1, 2, 3 ),  
);

다행히도 상상한 그대로의 결과가 나왔습니다.

끝.

참고자료