2009-11-28 12 views
7

सूची कैसे मैं इस बहुआयामी सरणी से जाते हो:पीएचपी सरणी

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> 
ऊपर

html में है ...

+0

बहुत सी बातें। यह मेरा आखिरी गैस – Ash

उत्तर

12

यहाँ एक बहुत अधिक पोषणीय यह करने के लिए की तुलना में एचटीएमएल प्रतिध्वनित करने के लिए रास्ता नहीं है ...

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

outputted एचटीएमएल प्रतिसाद नहीं का उपयोग कर एक और तरीका बताया सबसे सुंदर प्रारूप में नहीं है लेकिन आप इसे ठीक कर सकते हैं। यह सब कुछ है कि आप कोड को पढ़ने के लिए सुंदर एचटीएमएल या आसान चाहते हैं। मैं कोड पढ़ने के लिए आसान हूं =)

+0

यह सही उत्तर है। उत्तम। मुझे endforeach के लिए परिचय के लिए धन्यवाद। यह वास्तव में वो ही है जो मैं ढूंढ़ रहा हूँ। – Ash

+0

@Ash आप ध्यान दे सकते हैं कि 'अंतहीन' का उपयोग यहां पठनीयता की भावना के लिए किया जाता है, इसलिए सामान्य 'foreach' का उपयोग किया जा सकता है। Http://php.net/manual/en/control-structures.alternative-syntax.php –

0

मान लें आपके डेटा $ में है सरणी।

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

इसका परीक्षण नहीं किया है, लेकिन मुझे पूरा यकीन है कि यह सही है।

+0

है जो अनुरोध नहीं किया गया था, लेकिन शायद यह संभव था। कुछ सीएसएस स्वरूपण को पूरा करेंगे। –

+0

वास्तव में उपर्युक्त कोड केवल प्रत्येक माता-पिता के लिए एक "बच्चा" प्रदान करता है, उदाहरण के लिए कैमडेन टाउन को केवल 2 होटल के बजाय सूचीबद्ध एक होटल दिया जाता है। – Ash

+0

PHP – jason

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

मुझे लगता है कि आप इसे ढूंढ रहे हैं।

+2

रॉकस्टार कोड यहां देखें। मुझे इसे बनाने का समय बचाने के लिए धन्यवाद! – Beachhouse

+0

मुझे प्यार है कि यह रिकर्सिव है –

7

रिफैक्टर्ड acmol के funciton

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