0

私は今日、いくつかのコードに取り組んでおり、多次元配列の問題で立ち往生しました。まず第一に、問題自体をよりよく理解するために私が書いたコードを読むと便利かもしれません:

public function treeLeaves(array $elements, $parent = 0) {

$branch = array();

foreach($elements as $element) {

    $leaf = array('pageid'      => $element['pageid'],
                  'page_parent' => $element['page_parent'],
                  'label'       => ucfirst($element['page_print'][0]['print_title']),
                  'uri'         => $element['page_alias']);

    if($element['page_parent'] == $parent) {
        $children = $this->treeLeaves($elements, $leaf['pageid']);
        if($children) {
            foreach($children as $key => $child) {
                $leaf['pages'][] = $children[$key];
            }
        }
        $branch[] = $leaf;
    }
}

return $branch; }

何らかの理由で、親 URI エイリアスをすべての個別の子 URI に接着する方法がわかりません。私が探している望ましい結果は次のようになります: http://pastebin.com/Eh9ExBjG

マスターがここで私を助けてくれることを願っています。私は非常に多くの異なることを試してきましたが、解決するのは比較的簡単だと感じていますが、これを理解することはできません.

4

1 に答える 1

1

やや単純化されていますが、次のアイデアが得られると思います。

function treeLeaves($elements, $parent = 0, $baseUri = '/index') {
    $branch = array();
    foreach($elements as $element) {
        if ($element['page_parent'] == $parent) {
            $leaf = array(
                'uri'    => $baseUri . '/' . $element['page_alias'];
            );
            $leaf['pages'] = treeLeaves($elements, $element['pageid'], $leaf['uri']);
            $branch[] = $leaf;
        }
    }
    return $branch;
}
于 2013-11-02T19:45:56.003 に答える