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

PHP에서 배열 요소 제거 후 인덱스 재정렬하는 방법

PHP에서 배열의 특정 요소를 제거한 뒤 인덱스를 다시 정렬(재인덱싱)하려면 unset() 함수와 array_values() 함수를 함께 사용하면 됩니다.

unset()은 해당 요소를 삭제하지만 기존 인덱스는 그대로 유지되어 중간에 빈 번호가 생기게 됩니다. 이때 array_values()를 사용하면 배열의 값들을 기준으로 인덱스가 0부터 순차적으로 재배열됩니다.

예제 코드

<?php
    $arr = array(" John ", "Jacob ", " Tom ", " Tim ");
    echo "앞뒤 공백이 포함된 배열...\n";
    foreach($arr as $value) {
        echo "값 = $value \n";
    }
    echo "\n쉼표로 구분된 목록...\n";
    print_r(implode(', ', $arr));
    $result = array_map('trim', $arr);
    echo "\n공백이 제거된 배열...\n";
    foreach($result as $value) {
        echo "값 = $value \n";
    }
    unset($result[1]);
    echo "\n요소 제거 후 재인덱싱된 배열...\n";
    $result2 = array_values($result);
    foreach($result2 as $value) {
        echo "값 = $value \n";
    }
?>

실행 결과

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

앞뒤 공백이 포함된 배열...
값 = John
값 = Jacob
값 = Tom
값 = Tim

쉼표로 구분된 목록...
John , Jacob , Tom , Tim

공백이 제거된 배열...
값 = John
값 = Jacob
값 = Tom
값 = Tim

요소 제거 후 재인덱싱된 배열...
값 = John
값 = Tom
값 = Tim

코드 설명

위 예제에서 사용된 주요 함수들을 살펴보면 다음과 같습니다.

1. array_map('trim', $arr)

배열의 모든 요소에 trim() 함수를 일괄 적용하여 각 문자열의 앞뒤 공백을 제거합니다. 콜백 함수와 배열을 인자로 받아 처리된 새로운 배열을 반환합니다.

2. unset($result[1])

지정한 인덱스의 요소를 배열에서 완전히 삭제합니다. 단, 나머지 요소들의 인덱스는 자동으로 조정되지 않으므로 인덱스 1이 빠진 상태(0, 2, 3)로 남게 됩니다.

3. array_values($result)

연관 키를 모두 버리고 값을 기준으로 0부터 시작하는 새로운 인덱스를 부여한 배열을 반환합니다. 이 덕분에 요소가 삭제된 배열도 연속적인 인덱스를 갖게 되어 for 반복문 등에서 안전하게 활용할 수 있습니다.

정리

PHP에서 배열 요소를 삭제하고 인덱스를 재정렬하는 과정은 매우 간단합니다. 핵심 흐름은 다음과 같습니다.

unset()으로 요소 삭제 → array_values()로 인덱스 재정렬

이 두 함수의 조합만 기억해 두면 배열 조작 시 발생할 수 있는 인덱스 누락 문제를 손쉽게 해결할 수 있습니다.