【发布时间】:2013-09-28 14:52:36
【问题描述】:
我有一个递归函数,它可以执行很多功能和一些数据库调用,以及不创建一些很酷的东西。我想将每次调用函数的结果保存到一个数组中。
所以我这样做了,我首先得到了一个与函数结果类似的多维数组。它看起来像这样:
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();
【问题讨论】:
标签: php arrays recursion multidimensional-array flatten