PHP에서 매개변수를 사용한 재귀
재귀를 사용하여 배열의 요소를 순차적으로 출력해 봅시다. 배열은 처음에 함수의 매개변수로 전달된다고 가정합니다:
<?php
func([1, 2, 3]);
?>
먼저 재귀 없이
array_shift 함수를 사용하여
배열의 모든 요소를 하나씩 출력해 보겠습니다:
<?php
function func($arr) {
var_dump(array_shift($arr)); // 1을 출력합니다
var_dump($arr); // [2, 3]을 출력합니다 - 배열이 줄어들었습니다
var_dump(array_shift($arr)); // 2를 출력합니다
var_dump($arr); // [3]을 출력합니다 - 배열이 줄어들었습니다
var_dump(array_shift($arr)); // 3을 출력합니다
var_dump($arr); // []을 출력합니다 - 배열이 비었습니다
}
func([1, 2, 3]);
?>
보시다시피, array_shift 함수는
배열의 첫 번째 요소를 추출하여 반환하고,
동시에 배열 자체에서 해당 요소가 제거됩니다.
이제 재귀를 사용해 보겠습니다:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
물론, 실제로는 배열 요소를 반복하는 가장 쉬운 방법은 루프를 사용하는 것입니다. 위의 예제들은 단순히 간단한(실생활 예제가 아닌) 예제에서 재귀의 작동 방식을 보여주기 위한 것입니다. 재귀의 더 유용한 적용 예제는 단지 더 복잡할 뿐이며, 이에 대해서는 아래에서 조금 더 자세히 살펴보겠습니다.
다음 배열이 주어졌습니다:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
재귀를 사용하여 이 배열의 요소들을 화면에 출력하세요.