【发布时间】:2011-03-29 19:58:53
【问题描述】:
经过两个小时的挠头和谷歌搜索 - 我被困住了!
根据标题,我试图返回一个在函数循环时构建的数组。我只想在 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);
【问题讨论】:
-
我没有看到
$other_variable被定义在函数的范围内。 -
还有
[$val->id没有有效的语法。这甚至可以运行吗? -
什么?你不使用递归来构建数组?你来自哪个星球,莫罗尼亚?
-
这确实有效。当我 print_r($open) 得到我想要的数组时,它根本不会返回。此功能已被剥离,以免用不相关的代码轰炸你们:)。 [$val->id 应该是 [$val->id] 并且 $other_variable 应该在函数开始时全局化......对不起!
-
@Michael:递归构建数组有完全正当的理由。不要这么快判断。