2009-11-28 39 views
7

Làm thế nào để đi từ mảng này đa chiều:PHP Mảng vào danh sách

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

này:

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

trên là trong html ...

+0

rất nhiều điều. Đây là hơi thở cuối cùng của tôi – Ash

Trả lời

12

Đây là một cách rất dễ bảo trì hơn để làm điều đó hơn để 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> 

Dưới đây là một cách khác để sử dụng H2S cho các thành phố và danh sách không lồng

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

Các outputted html isn ở định dạng đẹp nhất nhưng bạn có thể sửa nó. Đó là tất cả về việc bạn muốn khá html hoặc dễ dàng hơn để đọc mã. Tôi là tất cả để dễ dàng hơn để đọc code =)

+0

đây là câu trả lời đúng. Hoàn hảo. Cảm ơn bạn đã giới thiệu cho tôi để kết thúc. đây chính xác là những gì tôi đang tìm kiếm. – Ash

+0

@Ash bạn có thể lưu ý rằng 'endforeach' được sử dụng ở đây cho cảm giác dễ đọc, do đó,' foreach' bình thường có thể được sử dụng. Xem http://php.net/manual/en/control-structures.alternative-syntax.php –

0

Giả sử dữ liệu của bạn trong $ mảng.

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

Chưa thử nghiệm, nhưng tôi chắc chắn điều đó đúng.

+0

Đây không phải là những gì đã được yêu cầu, nhưng nó có lẽ là những gì đã được dự định. Một số CSS sẽ hoàn thành định dạng. –

+0

trên thực tế mã trên chỉ cung cấp một "con" cho mỗi phụ huynh, ví dụ như Camden Town chỉ được cung cấp một khách sạn được liệt kê thay vì 2. – Ash

+0

đề nghị sử dụng tiếng vang trên bản in trong 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; 
} 

Tôi nghĩ rằng bạn đang tìm kiếm điều này.

+2

Mã Rockstar ngay tại đây. Cảm ơn vì đã giúp tôi tiết kiệm thời gian xây dựng nó! – Beachhouse

+0

Tôi thích nó đệ quy –

7

refactored acmol của 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>'; 
} 
Các vấn đề liên quan