Zend Framework: возможно ли создать вложенный массив из массива списка? - PullRequest
0 голосов
/ 16 марта 2012

Например, у меня есть массив:

array(
   array('id' => 1, 'parent' => 0),
   array('id' => 5, 'parent' => 0),
   array('id' => 3, 'parent' => 4),
   array('id' => 4, 'parent' => 6),
   array('id' => 6, 'parent' => 1),
);

Как создать вложенный массив, не используя рекурсию (через Zend_Navigation), чтобы получить этот?

array(
    'id' => 0,
    'pages' => array(
                     array('id => 1,
                           'pages' => array('id' => 6, 
                                            'pages' => array('id' => 4,
                                                             'pages' => array('id'=>3, 'pages' => null)
                                                             )
                                             )
                            )
                     ),
               array(
                      array('id' => 5, 'pages => null)
               )
     )

1 Ответ

3 голосов
/ 16 марта 2012

1001 * попробовать *

$pages = array(
   array('id' => 1, 'parent' => 0),
   array('id' => 5, 'parent' => 0),
   array('id' => 3, 'parent' => 4),
   array('id' => 4, 'parent' => 6),
   array('id' => 6, 'parent' => 1),
);
$container = new Zend_Navigation();
$container->addPage(new Zend_Navigation_Page_Uri(array(
    'label' => 'root',
    'uri' => '',
    'visible' => false,
    'id' => 0,
)));

foreach ($pages as $page) {
    $found = $container->findById($page['parent']);
    $found->addPage(
        Zend_Navigation_Page::factory(array(
            'id' => $page['id'],
            'label' => 'label' . $page['id']
        )));
}
var_dump($container->toArray());
...