階層内に一連のオブジェクトがあります。最上位の「ルート」ノードがあり、子ノードがあり、子ノードなどがあります。ネストされたセットモデルを使用して、この構造をDBに保存しようとしています。各ノードの各「側」は定義するために番号が付けられていますMySQL での階層データの管理のように、階層:
(ソース: mysql.com )
私の問題は、左右の値を計算することです。私は通常、RecursiveIteratorIterator を使用して階層を反復処理しますが、参照によってインデックス変数を解析する再帰関数に頼らずに数値を計算する方法を見つけることはできません。
何か案は?
おそらく役に立たないでしょうが、これは私が現在持っている(間違った)コードです:
$iterator = new RecursiveIteratorIterator(
new Node_List(array($root)),
RecursiveIteratorIterator::SELF_FIRST);
$i = 0;
foreach ($iterator as $node) {
$node->left = ++$i;
$node->right = ++$i;
}
ご覧のとおり、次のようになります。
Node
Node
Node
次の左右の値:
Node (1, 2)
Node (3, 4)
Node (5, 6)
それらがいつあるべきか:
Node (1, 6)
Node (2, 3)
Node (4, 5)