【问题标题】:Create flat array from recursive function instead of flattening after从递归函数创建平面数组,而不是在之后展平
【发布时间】: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


    【解决方案1】:

    也许你可以使用

    $leaf = array_merge($leaf, get_children());
    

    而不是

    $leaf[] = get_children();
    

    【讨论】:

    猜你喜欢
    • 2020-09-16
    • 2015-07-14
    • 2020-12-07
    • 1970-01-01
    • 2019-10-19
    • 2015-12-06
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多