Frage

Wie gehe ich aus diesem mehrdimensionalen Array:

Array (
  [Camden Town] => Array (
    [0] => La Dominican
    [1] => A Lounge
  ), 
  [Coastal] => Array (
    [0] => Royal Hotel
  ), 
  [Como] => Array (
    [0] => Casa Producto 
    [1] => Casa Wow
  ), 
  [Florence] => Array (
    [0] => Florenciana Hotel
  )
)

folgt aus:

<ul>
  <li>Camden Town</li>
  <ul>
    <li>La Dominican</li>
    <li>A Lounge</li>
  </ul>
  <li>Coastal</li>
  <ul>
    <li>Royal Hotel</li>
  </ul>
  ...
</ul>

oben ist in html ...

War es hilfreich?

Lösung

Hier ist ein viel mehr wartbar Weg, es zu tun, als Echo html ...

<ul>
    <?php foreach( $array as $city => $hotels ): ?>
    <li><?= $city ?>
        <ul>
            <?php foreach( $hotels as $hotel ): ?>
            <li><?= $hotel ?></li>
            <?php endforeach; ?>
        </ul>
    </li>
    <?php endforeach; ?>
</ul>

Hier ist eine andere Art und Weise h2s für die Städte und nicht verschachtelt Listen

mit
<?php foreach( $array as $city => $hotels ): ?>
<h2><?= $city ?></h2>
    <ul>
        <?php foreach( $hotels as $hotel ): ?>
        <li><?= $hotel ?></li>
        <?php endforeach; ?>
    </ul>
<?php endforeach; ?>

Das ausgegebene HTML ist nicht im schönsten Format aber Sie können das beheben. Es geht darum, ob Sie recht html wollen oder einfachen Code zu lesen. Ich bin für einfachen Code lesen =)

Andere Tipps

//code by acmol
function array2ul($array) {
    $out = "<ul>";
    foreach($array as $key => $elem){
        if(!is_array($elem)){
                $out .= "<li><span>$key:[$elem]</span></li>";
        }
        else $out .= "<li><span>$key</span>".array2ul($elem)."</li>";
    }
    $out .= "</ul>";
    return $out; 
}

Ich glaube, Sie für diese suchen.

überarbeitete anmol der Funktion

/**
 * Converts a multi-level array to UL list.
 */
function array2ul($array) {
  $output = '<ul>';
  foreach ($array as $key => $value) {
    $function = is_array($value) ? __FUNCTION__ : 'htmlspecialchars';
    $output .= '<li><b>' . $key . ':</b> <i>' . $function($value) . '</i></li>';
  }
  return $output . '</ul>';
}

Nehmen wir Ihre Daten in $ array ist.

echo '<ul>';
foreach ($array as $city => $hotels)
{
    echo "<li>$city</li>\n<ul>\n";
    foreach ($hotels as $hotel)
    {
        echo "    <li>$hotel</li>\n";
    }
    echo "</ul>\n\n";
}
echo '</ul>';

Hat es nicht getestet, aber ich bin mir ziemlich sicher, dass es richtig ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top