"then"부분에서 $ open에 할당하지만 결코 그 값을 반환하지 않습니다. 따라서 else 부분을 입력하는 경우를 제외하고는 무언가를 되돌릴 수는 없지만 그 다음은 변경되지 않은 버전입니다.
그래서 내가 할 수있는 일은 다음과 같습니다. $ open을 반납하지 않고 버전을 만들었습니다. 함수를 호출하기 전에 $ open을 초기화하십시오. 전달하십시오. 그런 다음 필요하면 수정하십시오.
어쨌든 참조로 전달하기 때문에 실제로이 $ open 값을 반환 할 이유가 없습니다. 즉, 항상 조작중인 것과 동일한 객체 여야합니다. (그런 경우에는 그렇지 않습니다. 아마도 버그).
이렇게하면 호출 및 반환과 함께 흐름 논리에 집중할 수 있으며 항상 동일한 데이터 구조를 사용해야합니다.
갱신
function find_parent($number, $open = false) {
if(isset($other_variable[$number])) {
foreach($other_variable[$number] as $val) {
$open[$val->id] = [$val->id;
$open = find_parent([$val->id, $open);
return $open; // INSERTED
}
}
else {
return $open;
}
}
내가 볼 수없는'$ other_variable'은 함수의 범위에서 정의된다. – NullUserException
또한'[$ val-> id']에는 유효한 구문이 없습니다. 이것도 실행됩니까? – NullUserException
무엇? 배열을 만들 때 재귀를 사용하지 않습니까? 너 무슨 행성이야? –