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

PHP foreach 루프에서 특정 값에 접근하고 반환하는 방법

PHP의 foreach 루프에서 배열의 값을 직접 접근하고 수정하려면 참조(reference) 연산자인 &를 사용하면 됩니다. 참조를 활용하면 루프 내부에서 배열의 원본 값을 변경할 수 있으며, 이를 새로운 배열에 담아 반환하는 것도 가능합니다.

기본 문법

foreach에서 배열 값을 참조로 가져오는 기본 문법은 다음과 같습니다.

foreach ($yourArrayName as &$anyVariableName)

여기서 변수 이름 앞에 붙은 &가 핵심입니다. 이 기호가 없으면 루프 안에서 값을 변경해도 원본 배열에는 아무런 영향을 주지 못합니다.

예제 소개

예를 들어 다음과 같은 숫자 배열이 있다고 가정해 보겠습니다.

$values = array(35, 50, 100, 75);

이제 아래 PHP 코드를 사용하여 배열의 각 값에 5를 곱한 결과를 새 배열에 저장한 뒤 반환해 보겠습니다.

코드 예제

<!DOCTYPE html>
<html>
<body>
<?php
$values = array(35, 50, 100, 75);

function getValues($values) {
    $allValues = [];
    $counter = 0;

    // &(참조)를 사용해 각 요소에 직접 접근
    foreach ($values as &$tempValue) {
        $tempValue = $tempValue * 5;      // 값에 5를 곱함
        $allValues[$counter] = $tempValue; // 결과를 새 배열에 저장
        $counter++;
    }

    return $allValues; // 처리된 배열 반환
}

$result = getValues($values);

for ($i = 0; $i < count($result); $i++) {
    echo $result[$i], "<br>";
}
?>
</body>
</html>

실행 결과

위 코드를 실행하면 배열의 각 요소가 5배가 되어 다음과 같이 출력됩니다.

175
250
500
375

핵심 정리

  • foreach ($array as &$value)처럼 변수 앞에 &를 붙이면 배열 요소에 대한 참조가 전달됩니다.
  • 참조를 통해 루프 내부에서 계산한 결과를 원본 배열에 반영하거나, 별도의 배열에 담아 함수 외부로 반환할 수 있습니다.
  • 참조를 사용한 후에는 unset($tempValue);로 참조를 해제하는 것이 좋습니다. 그렇지 않으면 이후 코드에서 의도치 않게 마지막 요소가 변경될 수 있습니다.