سؤال

وكيف أذهب من هذه المجموعة متعددة الأبعاد:

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

وعلى هذا:

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

وسبق هو في أتش تي أم أل ...

هل كانت مفيدة؟

المحلول

وإليك طريقة أكثر للصيانة بكثير للقيام بذلك من أن أردد أتش تي أم أل ...

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

وهنا طريقة أخرى باستخدام H2S للمدن وليس القوائم المتداخلة

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

ووأتش تي أم أل أنتج ليس في أجمل شكل ولكن هل يمكن إصلاح ذلك. انها كل شيء عن ما إذا كنت تريد أتش تي أم أل جميلة أو أسهل للقراءة التعليمات البرمجية. أنا كل لأسهل للقراءة رمز =)

نصائح أخرى

//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; 
}

وأعتقد أنك تبحث عن هذا.

وظيفة بتعميل الترميز انمول ل

/**
 * 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>';
}

وافترض بياناتك في $ مجموعة.

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

ولم نجرب ذلك، ولكن أنا متأكد من أنه صحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top