我有一个递归函数,可以执行大量功能和一些数据库调用,以及什么不能创建一些很酷的东西。我想将每次调用函数的结果保存到数组中。
所以我这样做了,我得到了一个多维数组,其结构类似于函数的结果。它看起来像这样:
Array
(
[0] => 2507
[1] => Array
(
[0] => 2508
)
[2] => 2073
[3] => Array
(
[0] => 2397
)
)
我可以使用PHP 5.3的array_walk_recursive
轻松压扁它。
但是,我希望我不需要在原始函数之后调用另一个函数,因为这似乎是多余的。
如何通过每次调用“创建”数据的递归函数创建平面数组?
我试图稍微截断我的递归函数...
function get_children() {
$leaf = new array();
$results = database_call();
foreach($results as $res) {
$leaf[] = $res;
// do tons of stuff not included
if($res->children == 1) {
$leaf[] = get_children();
}
}
return $leaf;
}
$i_wish_this_was_flat = get_children();
答案 0 :(得分:2)
也许你可以使用
$leaf = array_merge($leaf, get_children());
而不是
$leaf[] = get_children();