Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 배열을 다시 인덱싱하는 방법 – array_combine() 활용 예제

PHP에서 배열의 키(key)를 새로 지정하는 작업, 즉 재인덱싱(re-indexing)은 기존 배열의 인덱스를 원하는 범위나 형식으로 바꾸고 싶을 때 유용하게 사용됩니다. 이 작업에는 주로 array_combine(), range(), array_values() 세 가지 함수를 함께 활용합니다.

동작 원리는 간단합니다. array_values()로 배열의 값만 추출하고, range()로 새로운 키 목록을 생성한 뒤, array_combine()이 이 둘을 하나의 배열로 합쳐 줍니다.

예제 1: 숫자 키로 재인덱싱하기

먼저 숫자 인덱스를 2부터 시작하도록 변경하는 예제를 살펴보겠습니다.

<?php
   $arr = array( 0=>"150", 1=>"100", 2=>"120", 3=>"110", 4=>"115" );
   echo "배열 출력...\n";
   foreach( $arr as $key => $value) {
      echo " Key = " . $key . ", Value = " . $value . "\n";
   }
   $arr = array_combine(range(2,
      count($arr) + (1)),
      array_values($arr));
   echo "\n재인덱싱 후 배열\n";
   foreach( $arr as $key => $value) {
      echo " Key = " . $key . ", Value = " . $value . "\n";
   }
?>

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

배열 출력...
Key = 0, Value = 150
Key = 1, Value = 100
Key = 2, Value = 120
Key = 3, Value = 110
Key = 4, Value = 115
재인덱싱 후 배열
Key = 2, Value = 150
Key = 3, Value = 100
Key = 4, Value = 120
Key = 5, Value = 110
Key = 6, Value = 115

이 예제에서 range(2, count($arr) + 1)는 2부터 6까지의 숫자 키를 생성합니다. 그 결과 원래 0부터 시작하던 인덱스가 2부터 시작하도록 변경된 것을 확인할 수 있습니다.

예제 2: 알파벳 문자 키로 재인덱싱하기

숫자뿐만 아니라 알파벳 문자를 키로 사용할 수도 있습니다. 이때는 chr()ord() 함수를 함께 활용합니다.

<?php
   $arr = array( "a"=>"150", "b"=>"100", "c"=>"120", "d" =>"110", "e"=>"115" );
   echo "배열 출력...\n";
   foreach( $arr as $key => $value) {
      echo " Key = " . $key . ", Value = " . $value . "\n";
   }
   $arr = array_combine(range("b",
      chr(count($arr) + (ord("b")-1))),
      array_values($arr));
   echo "\n재인덱싱 후 배열\n";
   foreach( $arr as $key => $value) {
      echo " Key = " . $key . ", Value = " . $value . "\n";
   }
?>

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

배열 출력...
Key = a, Value = 150
Key = b, Value = 100
Key = c, Value = 120
Key = d, Value = 110
Key = e, Value = 115
재인덱싱 후 배열
Key = b, Value = 150
Key = c, Value = 100
Key = d, Value = 120
Key = e, Value = 110
Key = f, Value = 115

여기서 range("b", ...)는 'b'부터 'f'까지의 알파벳 키를 생성합니다. ord("b")는 문자 'b'의 아스키 코드 값(98)을 반환하고, 여기에 배열 요소 개수를 더한 값을 chr()로 다시 문자로 변환해 마지막 키를 계산하는 방식입니다.

정리

PHP에서 배열을 재인덱싱하는 핵심은 array_combine() 함수입니다. 첫 번째 인수로 range()로 생성한 새로운 키 배열을, 두 번째 인수로 array_values()로 추출한 기존 배열의 값들을 전달하면 원하는 형태의 인덱스를 손쉽게 만들 수 있습니다. 숫자 키와 문자 키 모두 동일한 원리로 적용되므로 상황에 맞게 응용해 보시기 바랍니다.