PHP에서 연관 배열을 다루다 보면 문자열 키나 불연속적인 숫자 키를 0부터 시작하는 연속된 인덱스로 재설정해야 하는 경우가 자주 발생합니다. 이럴 때 가장 간단하고 효율적으로 사용할 수 있는 함수가 바로 array_values()입니다.
array_values()는 배열의 모든 값을 반환하면서, 기존의 키는 버리고 새로운 숫자 인덱스(0부터 시작)를 자동으로 부여합니다. 원본 배열은 그대로 유지되며, 결과는 새로운 배열로 반환됩니다.
예제 1: 문자열 키 재설정하기
다음은 문자열 키를 가진 배열의 키를 재설정하는 예제입니다.
<?php $arr = array( "p"=>"150", "q"=>"100", "r"=>"120", "s"=>"110"); var_dump ($arr); $res = array_values($arr); var_dump ($res); ?>
출력 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
array(4) {
["p"]=>
string(3) "150"
["q"]=>
string(3) "100"
["r"]=>
string(3) "120"
["s"]=>
string(3) "110"
}
array(4) {
[0]=>
string(3) "150"
[1]=>
string(3) "100"
[2]=>
string(3) "120"
[3]=>
string(3) "110"
}출력 결과를 보면, 원본 배열 $arr은 "p", "q", "r", "s"라는 문자열 키를 그대로 유지하고 있지만, array_values()를 통해 생성된 $res 배열은 0, 1, 2, 3이라는 연속된 숫자 인덱스로 키가 재설정된 것을 확인할 수 있습니다.
예제 2: 불연속 숫자 키 재설정하기
array_values()는 숫자 키가 불연속적일 때도 유용하게 사용됩니다. 이번에는 임의의 숫자 키를 가진 배열을 살펴보겠습니다.
<?php $arr = array( 8=>"Ben", 4=>"Kevin", 7=>"Mark", 3=>"Hanks"); var_dump ($arr); $res = array_values($arr); var_dump ($res); ?>
출력 결과
실행 결과는 다음과 같습니다.
array(4) {
[8]=>
string(3) "Ben"
[4]=>
string(5) "Kevin"
[7]=>
string(4) "Mark"
[3]=>
string(5) "Hanks"
}
array(4) {
[0]=>
string(3) "Ben"
[1]=>
string(5) "Kevin"
[2]=>
string(4) "Mark"
[3]=>
string(5) "Hanks"
}원본 배열은 8, 4, 7, 3처럼 중간에 비어 있는 불규칙한 키를 가지고 있었지만, array_values() 적용 후에는 값의 순서를 유지한 채 0부터 3까지 깔끔하게 정렬된 인덱스로 변환되었습니다.
정리
array_values()는 배열의 값만 추출하여 0부터 시작하는 연속된 숫자 키로 재구성한 새 배열을 반환합니다.- 문자열 키든, 불연속적인 숫자 키든 상관없이 일괄적으로 인덱스를 재설정할 수 있습니다.
- 원본 배열은 변경되지 않으므로 안전하게 사용할 수 있습니다.
배열 요소를 삭제한 후 인덱스에 빈틈이 생겼을 때, 또는 연관 배열을 일반 인덱스 배열로 변환하고 싶을 때 array_values()를 활용해 보세요.