传递值或引用,递归地排序对象数组

时间:2015-12-19 16:57:12

标签: php arrays recursion

我有点像一个PHP新手,在过去的几年里这只是一个爱好。

我有这个原型的对象:

menu_node ->name
          ->order
          ->children

其中children可能是这些相同对象的数组 - 所以可以深入多层次。我写了一个简单的递归函数,它遍历嵌套并在每个usort上执行->children

private function sort_node( $node ) {
    if ( isset($node->children) ) {
        usort(  $node->children,
                function($a, $b) {return ($a->order == $b->order) ? 0 : ( ($a->order < $b->order) ? -1 : 1 );}
        );
        foreach ( $node->children as $child_node ) {
            $this->sort_node( $child_node );
        }
    }
    return $node;
}   

似乎工作正常。但我不确定“为什么”它工作正常,我不喜欢 - 我想知道肯定。

我担心那个foreach循环内部的传入对象发生了什么 - 我是否一直在修改传入对象的内存空间,或者我很幸运,我的版本和配置PHP的工作正常,但它是如何在其他安装中工作的确无法确定的?

我想我不确定何时使用参数格式&$node而不是$node?对于迭代器变量$child_node,在该循环中也是如此。

任何见解或确认我在这里的确定没问题,我们将不胜感激。

0 个答案:

没有答案