2016-05-30 16 views
0

I Ergebnisse aus einer MySQL-Abfrage zu bekommen, und ich bin zu kämpfen dieses Array in eine verschachtelte Liste drehen:PHP ein mehrdimensionales Array in verschachtelte Liste

Array(

[0] => Array 
    (
     [post_title] => Esprit 
     [post_id] => 240 
     [folder_id] => 236 
    ) 

[1] => Array 
    (
     [post_title] => GC 
     [post_id] => 241 
     [folder_id] => 236 
    ) 

[2] => Array 
    (
     [post_title] => Guess 
     [post_id] => 242 
     [folder_id] => 236 
     [children] => Array 
      (
       [0] => Array 
        (
         [post_title] => Jewels 
         [post_id] => 250 
         [folder_id] => 242 
         [children] => Array 
          (
           [0] => Array 
            (
             [post_title] => Products-shots 
             [post_id] => 251 
             [folder_id] => 250 
             [children] => Array 
              (
               [0] => Array 
                (
                 [post_title] => New-Collection 
                 [post_id] => 252 
                 [folder_id] => 251 
                ) 

              ) 

            ) 

          ) 

        ) 

      ) 

    ) 

[3] => Array 
    (
     [post_title] => Guess-Connect 
     [post_id] => 243 
     [folder_id] => 236 
    ) 

[4] => Array 
    (
     [post_title] => Nautica 
     [post_id] => 244 
     [folder_id] => 236 
    ) 

[5] => Array 
    (
     [post_title] => Obaku 
     [post_id] => 245 
     [folder_id] => 236 
    ) 

[6] => Array 
    (
     [post_title] => Police 
     [post_id] => 246 
     [folder_id] => 236 
    ) 

[7] => Array 
    (
     [post_title] => Roamer 
     [post_id] => 247 
     [folder_id] => 236 
    ) 

[8] => Array 
    (
     [post_title] => Superdry 
     [post_id] => 248 
     [folder_id] => 236 
    ) 

[9] => Array 
    (
     [post_title] => Vulcain 
     [post_id] => 249 
     [folder_id] => 236 
    ) 

) 

I Tonnen Codes versucht, aber niemand kann mir bekommen diese genaue Ausgabe:

<ul> 
    <li>Esprit</li> 
    <li>GC</li> 
    <li>Guess 
     <ul> 
      <li>Jewels</li> 
      <li>Products-shot</li> 
      <li>New-collection</li> 
     </ul> 
    </li> 
    <li>Guess-Connect</li> 
    <li>Nautica</li> 
    <li>Obaku</li> 
    <li>Police</li> 
    <li>Roamer</li> 
    <li>Superdry</li> 
    <li>Vulcain</li> 
</ul> 

Ich würde wirklich Hilfe zu schätzen wissen! Vielen Dank im Voraus

+0

Die SQL-Ergebnisstruktur ist falsch. Sie haben verschachtelte Kinder, aber Sie möchten sie als Kinder desselben Elternteils betrachten. Was ist falsch? Ihr Konzept oder die Datenbankstruktur? –

+0

Eigentlich bekomme ich nicht verschachtelte Daten von phpMyAdmin. Ich verwende eine Funktion, um ein neues Array zu erstellen, das die untergeordneten Elemente gemäß einer 'parent_id'-Spalte zu ihren Eltern verschachtelt. – Neoweiter

Antwort

0

versuchen, die folgende Lösung:

function htmlList($arr) 
{ 
    $list = '<ul>'; 
    foreach ($arr as $value) 
    { 
     $listItem = (is_array($value) ? htmlList($value) : $value); 
     $list .= "<li>$listItem</li>"; 
    } 
    $list .= '</ul>'; 
    return $list; 
} 
echo htmlList($array); 
+1

Wo ist 'make_list' definiert? – Rasclatt

+0

Ich denke, Antworter bedeutet 'htmlList()'. Sie müssen dieselbe Funktion für die Unterlisten aufrufen. – Peter

+0

'htmlList ($ array)' anstelle von 'htmlList ($ arr)' – Dumkaaa

1

Sie nur zweite Pegelanzeige versuchen, diese setzen kann:

function second_level_list($arr){ 
    foreach($arr as $item){ 
    echo '<li>'; 
    echo $item['post_title']; 
    echo '</li>'; 
    if(isset($item['children']) && is_array($item['children'])){ 
     second_level_list($item['children']); 
    } 
    } 
} 

<ul> 
    <?php foreach($array as $list ): ?> 
    <li><?php echo $list['post_title'] ?> 
    <?php if(isset($list['children']) && is_array($list['children'])): ?> 
     <ul> 
      <?php second_level_list($list['children']); ?> 
     </ul> 
     <?php endif; ?> 
    </li> 
    <?php endforeach; ?> 
</ul> 

Komplette Ergebnisse https://3v4l.org/YD0Yc

0

ich Ihren PHP-Code angepasst, um ein wenig bit, und scheint für mich zu arbeiten:

function second_level_list($arr){ 
    foreach($arr as $item){ 
    echo '<li>'.$item['post_title'].'</li>'; 
    if(isset($item['children']) && is_array($item['children'])){ 
    echo '<ul>'; 
     second_level_list($item['children']); 
    echo '</ul>'; 
    } 
    } 
} 

Dank mate