Menu
Coddy logo textTech

참조에 의한 전달

Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨. 68개 중 7번째.

기본적으로 PHP에서 variablefunction에 전달하면, function은 해당 variable 값의 복사본을 받습니다. 즉, function 내부에서 변경한 내용은 function 외부의 원래 variable에 영향을 주지 않습니다.

하지만 때로는 function이 원래 variable을 직접 수정하도록 하기를 원할 수 있습니다. 이때 reference로 전달하는 방식이 사용됩니다. function 정의에서 parameter 이름 앞에 앰퍼샌드(&)를 추가하면 PHP에 복사본이 아닌 실제 variable을 전달하도록 지정할 수 있습니다:

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // 출력: 20
?>

$value가 함수에서 아무것도 반환하지 않았는데도 10에서 20으로 변경된 점에 주목하세요. &$number 매개변수는 원래 $value 변수에 대한 직접적인 연결을 만들어 함수가 해당 변수를 직접 수정할 수 있도록 합니다.

이 기법은 함수가 여러 변수를 수정해야 하거나 복사하는 것이 비효율적인 대규모 데이터 구조를 다룰 때 특히 유용합니다.

challenge icon

챌린지

쉬움

updateInventory라는 function을 Create하세요. 이 function은 세 개의 parameter를 takes합니다. quantity variable에 대한 reference, 더할 양, 그리고 제거할 양입니다. 이 function은 첫 번째 양을 더하고 두 번째 양을 빼서 원래 quantity를 수정해야 합니다.

세 개의 inputs를 받습니다: 초기 quantity, 더할 양, 제거할 양입니다. 세 inputs를 모두 읽고, 초기 quantity로 variable을 만들고, quantity를 reference로 전달하면서 add 및 remove 양과 함께 updateInventory function을 Call한 다음, updated quantity를 출력하세요.

Input format: 세 줄 - 첫 번째 줄에는 초기 quantity( number), 두 번째 줄에는 더할 양( number), 세 번째 줄에는 제거할 양( number)이 포함됩니다.

Expected output: add 및 remove 후의 updated quantity

직접 해보기

<?php
// 입력 읽기
$initialQuantity = intval(fgets(STDIN));
$amountToAdd = intval(fgets(STDIN));
$amountToRemove = intval(fgets(STDIN));

// quantity 변수 생성
$quantity = $initialQuantity;

// TODO: 참조 매개변수를 받는 updateInventory 함수를 여기에 생성

// TODO: quantity를 참조로 전달하여 updateInventory 함수 호출

// 업데이트된 quantity 출력
echo $quantity;
?>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 PHP 컴파일러