예, recursion을 사용할 수 있습니다. 재귀을하는 것은 당신이 어떤 깊이를 가지 않을 것 기본 케이스이 필요하다는 때
function printAll($a) {
if (!is_array($a)) {
echo $a, ' ';
return;
}
foreach($a as $v) {
printAll($v);
}
}
$array = array('hello',
array('world',
'!',
array('whats'),
'up'),
array('?'));
printAll($array);
당신이 항상 기억해야합니까 : 여기에 배열을 출력 모든 요소가 예입니다.
나는이 기능을 계속하기 전에 기본 케이스를 확인하고 싶다. 이것은 일반적인 관용구이지만 꼭 필요한 것은 아닙니다. 재귀 호출을 출력하거나 재귀 호출을 수행해야한다면 foreach
루프를 체크인 할 수도 있지만 코드를 유지하는 것이 더 어려울 수 있습니다.
현재 입력과 기본 사례 간의 "거리"는 변형이며 정수입니다. 변형은 모든 재귀 호출에서 엄격하게 감소해야합니다. 앞의 예에서 변형은 the depth of $a
입니다. 변형에 대해 생각하지 않으면 무한 재귀로 끝날 위험이 있으며 결과적으로 스크립트는 stack overflow으로 인해 죽을 것입니다. 재귀 함수 이전에 주석에 변종이 무엇인지 정확하게 기록하는 것은 드문 일이 아닙니다. array_walk_recursive
내부
번호를 사용하여 내장을 array_walk_recursive(). PHP는 재귀에서 짜증납니다. –