Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Oprava PHP kódu

Ahoj, funkce vypisuje seznam z pole v PHP, jenže je tam nějaká chyba a nemůžu jí najít. Generuje to více položek než by mělo. Strukturu pole bych potřeboval zachovat tak jak je. Poradí někdo zkušený? Předem děkuji.


$array = [] ;
$array["aaa"]               = ["url"=>"aaa", "name"=>"AAA"];
$array["bbb"]               = ["url"=>"bbb", "name"=>"BBB"];
$array["ccc"]               = ["url"=>"ccc", "name"=>"CCC"];
$array["ccc"]["ddd"]        = ["url"=>"ddd", "name"=>"DDD"];
$array["ccc"]["ddd"]["eee"] = ["url"=>"eee", "name"=>"EEE"];
$array["fff"]               = ["url"=>"fff", "name"=>"FFF"];
$array["ggg"]               = ["url"=>"ggg", "name"=>"GGG"];
 

function makeList($array){
      $output = '<ul>';
      foreach ($array as $key => $subArray){
             $output .= '<li><a href="'.$subArray["url"].'">'.$subArray["name"].'</a>';
             $output .= makeList($subArray);
             $output .= '</li>';
      }
      $output .= '</ul>';
      return $output;
}

echo makeList($array);

A tady je výstup
xaDZ66Kd

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Vážně nikdo neporadí? :-/
Honza11 01.01.2018 21:29
Honza11
S čím? Řešení už tu máš, ne?
Wikan 01.01.2018 21:38
Wikan
Potřebuji poradit jak složit ty odkazy...
Honza11 01.01.2018 21:50
Honza11
Bez záruky, v PHP nedělám. function makeList($array, $prevKey = null){ if (is_array($array)) { $pri… poslední
Wikan 01.01.2018 22:08
Wikan

Bez záruky, v PHP nedělám.

function makeList($array, $prevKey = null){
      if (is_array($array)) {
        $pridej_ul=false;
        foreach ($array as $key => $subArray){
          $url = $prevKey.$key;
          if (isset($subArray["url"])) {
             $pridej_ul=true;
             $output .= '<li>';
             $output .= '<a href="'.$url.'">'.$subArray["name"].'</a>';
             $output .= makeList($subArray);
             $output .= '</li>';
          }
          else $output .= makeList($subArray, $url."/");
        }
        if ($pridej_ul) $output = '<ul>'.$output.'</ul>';
      }
      else $output = ''; 
      return $output;
}

Zpět do poradny Odpovědět na původní otázku Nahoru