我有点像一个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
,在该循环中也是如此。
任何见解或确认我在这里的确定没问题,我们将不胜感激。