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

PHP에서 키를 기반으로 배열 요소를 삭제하는 방법 – unset() 함수 활용하기

PHP에서 키(key)를 기반으로 배열 요소를 삭제할 때는 내장 함수인 unset()을 사용합니다. unset()은 지정한 키에 해당하는 요소를 배열에서 완전히 제거하며, 별도의 반환값 없이 원본 배열을 직접 변경합니다. 숫자 인덱스를 사용하는 배열과 문자열 키를 사용하는 연관 배열 모두에 적용할 수 있습니다.

예제 1: 일차원 배열에서 특정 요소 삭제하기

아래 예제에서는 앞뒤 공백이 포함된 문자열 배열을 만들고, array_map()과 trim()으로 공백을 정리한 뒤 unset()으로 인덱스 1('Jacob')에 해당하는 요소를 삭제합니다.

<?php
   $arr = array(" John ", "Jacob ", " Tom ", " Tim ");
   echo "앞뒤 공백이 포함된 배열...\n";
   foreach($arr as $value) {
      echo "Value = $value \n";
   }
   echo "\n쉼표로 구분된 리스트...\n";
   print_r(implode(', ', $arr));
   $result = array_map('trim', $arr);
   echo "\ntrim() 적용 후 업데이트된 배열...\n";
   foreach($result as $value) {
      echo "Value = $value \n";
   }
   unset($result[1]);
   echo "\n키 1의 요소 삭제 후 업데이트된 배열...\n";
   foreach($result as $value) {
      echo "Value = $value \n";
   }
?>

출력 결과

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

쉼표로 구분된 리스트...
 John , Jacob ,  Tom ,  Tim 

trim() 적용 후 업데이트된 배열...
Value = John
Value = Jacob
Value = Tom
Value = Tim

키 1의 요소 삭제 후 업데이트된 배열...
Value = John
Value = Tom
Value = Tim

실행 결과를 보면 unset($result[1]) 호출 이후 'Jacob'이 배열에서 사라진 것을 확인할 수 있습니다. 한 가지 주의할 점은 unset() 사용 시 배열의 인덱스가 자동으로 재정렬되지 않는다는 것입니다. 인덱스를 0부터 다시 정렬하고 싶다면 array_values() 함수를 함께 사용하면 됩니다.

예제 2: 다차원 연관 배열에서 요소 삭제하기

unset()은 학생별 과목 점수처럼 중첩된 구조의 다차원 배열에도 사용할 수 있습니다. 아래 예제에서는 'ryan'이라는 키에 해당하는 하위 배열 전체를 삭제합니다.

<?php
   $marks = array(
      "kevin" => array (
         "physics" => 95,
         "maths" => 90,
      ),
      "ryan" => array (
         "physics" => 92,
         "maths" => 97,
      ),
   );
   echo "케빈의 물리 점수 : ";
   echo $marks['kevin']['physics'] . "\n";
   echo "라이언의 수학 점수 : ";
   echo $marks['ryan']['maths'] . "\n";
   unset($marks["ryan"]);
   echo "'ryan' 요소 삭제 후 라이언의 수학 점수 : ";
   echo $marks['ryan']['maths'] . "\n";
?>

출력 결과

케빈의 물리 점수 : 95
라이언의 수학 점수 : 97
'ryan' 요소 삭제 후 라이언의 수학 점수 :
PHP Notice: Undefined index: ryan in /home/cg/root/6985034/main.php on line 25

요소를 삭제한 후 존재하지 않는 'ryan' 키에 다시 접근하면 위와 같이 "PHP Notice: Undefined index" 경고가 발생합니다. 이는 삭제된 요소에는 더 이상 접근할 수 없음을 의미합니다. 따라서 실제 개발에서는 unset()으로 요소를 삭제한 뒤 해당 값에 접근하기 전에 isset()이나 array_key_exists()로 키의 존재 여부를 먼저 확인하는 것이 안전합니다.