Listeye PHP Array

4 Cevap php

Nasıl bu çok boyutlu diziden gidiyor:

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
  )
)

Bunun için:

<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>

Yukarıdaki html olduğunu ...

4 Cevap

Burada html yankı daha bunu yapmak için çok daha rahat bir yol var ...

<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>

İşte şehirler için H2S olup iç içe listeler kullanarak başka bir yolu

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

Çıktılanmasını html güzel biçimde değil ama bunu çözebilirsiniz. Bu oldukça html veya kod okumak kolay isteyip ilgili. Tüm kolay kod okumak için ben =)

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

Bunu arıyoruz düşünüyorum.

Refactored acmol en funciton

/**
 * Convert 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> <em>' . $function($value) . '</em></li>';
  }
  return $output . '</ul>';
}

Veri $ dizisinde varsayalım.

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>';

Bunu test, ama ben doğru olduğuna eminim değil.