0
参照パラメータ付きの再帰関数があります。ユーザーが現在のノードを見ることができるかどうかを調べる、ナビゲーションを通過します。しかし、サブノード($nodeItem['nodes']
)に行くと、そのインスタンス内で正常に動作しますが、array
が返されません。それが問題です。サブノードにアクセスするべきではない場合、インスタンス内でそれらをアンセットしますが、配列を返してメインナビゲーションノードの配列に戻ったとき、すべてのサブノードが戻ります。何が間違っている可能性がありますか?参照付きPHP再帰関数
private function getNodesByRole(&$nodesArray)
{
foreach ($nodesArray as $nodeKey => $nodeItem) {
$link = trim($nodeItem['href'], self::SEPARATOR_PRESENTER_LINK);
if (substr_count($link, self::SEPARATOR_PRESENTER_LINK) == 2) {
$resource = substr($link, 0, strrpos($link, self::SEPARATOR_PRESENTER_LINK));
$privilege = substr($link, strrpos($link, self::SEPARATOR_PRESENTER_LINK) + 1);
if ($this->user->isAllowed($resource, $privilege) === false) {
unset($nodesArray[$nodeKey]);
dump($nodeItem);
dump($nodesArray);
} else if (!empty($nodeItem['nodes'])) {
$this->getNodesByRole($nodeItem['nodes']);
}
} else {
if (!empty($nodeItem['nodes'])) {
$this->getNodesByRole($nodeItem['nodes']);
}
}
if (isset($nodeItem['nodes']) && count($nodeItem['nodes']) == 0) {
unset($nodesArray[$nodeKey]);
continue;
}
}
return $nodesArray;
}
私はちょうど編集しなければならなかった、その戻り値は '$ nodesArray'ではなく' $ nodesArray [$ nodesKey] ['nodes'] 'に保存されています。 – HS1993