经过两个小时的头部刮擦和谷歌搜索 - 我被困住了!
根据标题,我正在尝试返回一个在函数循环时构建的数组。我想只返回else上的数组变量,但它不会合作。它只是从函数返回空白,但是在else中我可以print_r它并按预期显示。它只是不会在$ open_array变量中返回数组。任何想法(或滥用)都将非常感激!
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);
}
}
else {
return $open;
}
}
$open_array = find_parent($number);
print_r($open_array);
答案 0 :(得分:3)
在“then”部分中,您指定为$ open,但之后永远不会返回该值。所以你不能期望得到一些东西,除非你进入其他部分,但那时它是一个未更改的版本。
所以这就是我要做的事情:我会使用一个版本而不会返回$ 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;
}
}