gpt4 book ai didi

PHP - 从递归函数返回数组时出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:57 24 4
gpt4 key购买 nike

经过两个小时的摸索和谷歌搜索——我被困住了!

按照标题,我试图返回一个在函数循环时建立的数组。我只想在 else 上返回数组变量,但它不会合作。它只是从函数中返回为空白,但是在 else 中我可以打印它并按预期显示。它只是不会返回 $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);

最佳答案

在“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;
}
}

关于PHP - 从递归函数返回数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3483201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com