2013-11-02 2 views
0

저는 다차원 배열 문제가 조금이라도 남아있는 일부 코드를 작업하고 있습니다. 나는 모든 별도의 아이에 부모 URI 별칭을 접착제하는 방법을 알아낼 수없는 이유다차원 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. 원하는 결과는 다음과 같습니다. http://pastebin.com/Eh9ExBjG

일부 마스터가 나를 도와 줄 수 있기를 바랍니다. 나는 많은 다른 것들을 시도해 왔지만, 해결하기가 상대적으로 쉽다고 느끼더라도이 것을 알아낼 수는 없습니다.

+0

무엇을'$ 같이 elements' 않습니다를? uri를 즉석에서 생성해야하거나 어린이가 이미 url 속성을 보유해야하는지 여부를 알 수 없습니다. json 형식으로 게시 할 수 있다면 위대 할 것입니다. – charlietfl

+0

오해 찰리 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

예상대로, 그러한 단순한 솔루션입니다. 그것은 정확히 내가 목표로 삼던 곳이었습니다. 피터에게 감사드립니다! (동료 네덜란드 인이 "Enorm bedankt Peter!"라고 말하면서) – wpoortman

+0

네덜란드어 번역 감사;) –