2013-11-02 5 views
0

Я сегодня работал над некоторым кодом, где я застрял в небольшой проблеме многомерного массива. Прежде всего, это может быть удобно, чтобы прочитать код, который я написал, чтобы получить лучшее представление о самой проблеме:Множественное значение массива PHP-массива

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 псевдоним на все отдельный ребенок URIs. Желаемый результат, который я ищу, должен выглядеть примерно так: http://pastebin.com/Eh9ExBjG

Я надеюсь, что какой-нибудь мастер может мне помочь. Я пробовал так много разных вещей, но не могу понять эту штуку, хотя я чувствую, что ее относительно легко решить.

+0

, что делает '$ elements' выглядит? Не совсем ясно, нужно ли создавать uri на лету или у детей уже есть свойство url. Если можно опубликовать его в формате json, было бы замечательно – charlietfl

+0

Прошу прощения за непонимание charlie tfl. Каждый листок имеет свою «псевдонима» ценность и должен быть наклеен на своих детей и т. Д. – wpoortman

ответ

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; 
} 
+0

Как я и ожидал, такое решение для simpel. Он сделал именно то, к чему я стремился. Спасибо за поддержку Питера! (как товарищ голландец относится к «Enorm bedankt Peter!») – wpoortman

+0

Спасибо за голландский перевод;) –

Смежные вопросы