2010-05-22 60 views
-2

關聯數組我有以下的HTML代碼:故障顯示與PHP和HTML

<div id="newsTicker"> 
    <span class="icon news"></span> 
     <ul> 
      [repeating structure] 
      <li> 
       <ul> 
        <li><a href="#">News 1</a></li> 
        <li><a href="#">News 2</a></li> 
        <li><a href="#">News 3</a></li> 
       </ul> 
      </li>    
      [/repeating structure]   
     </ul> 
</div><!--/#newsTicker--> 

我也有一個PHP數組:

Array 
(
    [0] => Array 
     (
      [id] => 5 
      [title] => Concert Aria Urbana 
      [link] => http://www.searadeseara.ro/detalii-eveniment/aria-urbana-9.html 
      [date] => 2010-05-22 14:59:20 
     ) 

    [1] => Array 
     (
      [id] => 4 
      [title] => Poze Tequila Party 
      [link] => http://www.searadeseara.ro/detalii-galerie/tequila-party-3/ 
      [date] => 2010-05-22 14:58:56 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [title] => Psyche este utilizatorul saptamanii 
      [link] => http://www.searadeseara.ro/profil/1-Psyche.html 
      [date] => 2010-05-22 14:48:03 
     ) 

    [3] => Array 
     (
      [id] => 2 
      [title] => Galerie foto Summer Party 
      [link] => http://www.searadeseara.ro/detalii-galerie/summer-party-8/ 
      [date] => 2010-05-22 14:25:13 
     ) 

    [4] => Array 
     (
      [id] => 1 
      [title] => Concert Massive Attack 
      [link] => http://www.searadeseara.ro/detalii-eveniment/massive-attack-revin-la-bucuresti-13.html 
      [date] => 2010-05-22 14:24:37 
     ) 

) 

我想知道我可以再說一遍,代碼在[重複結構]中,併爲每個重複結構顯示3個不同的消息。

輸出必須是這樣的:

<div id="newsTicker"> 
    <span class="icon news"></span> 
     <ul>    
      <li> 
       <ul> 
        <li><a href="#">Concert Aria Urbana</a></li> 
        <li><a href="#">Poze Tequila Party</a></li> 
        <li><a href="#">Psyche este utilizatorul saptamanii</a></li> 
       </ul> 
      </li>    
      <li> 
       <ul> 
        <li><a href="#">Galerie foto Summer Party</a></li> 
        <li><a href="#">Concert Massive Attack</a></li>      
       </ul> 
      </li> 

     </ul> 
</div><!--/#newsTicker--> 

謝謝。

+0

你爲什麼不張貼在這裏真正的代碼? – 2010-05-22 16:03:04

+0

因爲我不知道如何編寫真正的代碼(PHP)。這就是我在這裏問的原因。 – Psyche 2010-05-22 16:06:06

+0

確實 - 重複結構是什麼? 「新聞1」第一次和第二次有什麼區別?你可以print_r()你想要顯示的結構並粘貼到問題中嗎? – Amadan 2010-05-22 16:09:02

回答

1

分割數據爲3個元素的數組的數組:

$news = // Your big array 
define('NUM_NEWS_PER_GROUP', 3); 

$newsGroups = array(); 
for ($i = 0; $i < count($news); $i += NUM_NEWS_PER_GROUP) { 
    $newsGroups[] = array_slice($news, $i, NUM_NEWS_PER_GROUP); 
} 

然後,以顯示它:

<ul>    
<?php foreach ($newsGroups as $newsGroup) : ?> 
    <li> 
     <ul> 
     <?php foreach ($newsGroup as $item) : ?> 
      <li><a href="#"><?php echo $item['title'] ?></a></li> 
     <?php endforeach; ?> 
     </ul> 
    </li> 
<?php endforeach; ?>   
</ul> 

這樣,當你改變主意,想每組4日消息,你中庸之道改變恆定值。

0

你的問題沒有意義;但讓你的數組中的新聞項目列表,你會希望做這樣的事情

<div id="newsTicker"> 
    <span class="icon news"></span> 
     <ul> 
      <li> 
       <ul> 
     <?php 
     foreach ($newsArray as $newsItem){ 
      echo '<li><a href="'.$newsItem['link'].'">'.$newsItem['title'].'</a></li>'; 
     } 
     ?> </ul> 
     </li> 
    </ul> 
</div> 
+0

我已更新了所需輸出的帖子。 – Psyche 2010-05-22 16:46:42

0

你沒有回答我的問題的是缺乏數據中的第二個維度的 - 我想你可能是希望將平面清單分成三塊(最後,來自「新聞動態」評論的提示略微有幫助)。如果真是這樣,這應該工作,只要$項目是一個真正的陣列(即從0開始的連續指數):

<div id="newsTicker"> 
    <span class="icon news"></span> 
     <ul> 
<?php 
    $outer = 0; 
    $count = count($items); 
    while ($outer < count($items)) { 
?> 
      <li> 
       <ul> 
<?php 
    for ($inner = 0; $inner < 3 && $outer < $count; $inner++, $outer++) { 
     echo '<li><a href="' 
      . $items[$outer]['link'] . '">' 
      . $items[$outer]['title'] . "</a></li>\n"; 
    } 
?> 
       </ul> 
      </li> 
<?php 
    } 
?> 
     </ul> 
</div><!--/#newsTicker--> 
+0

嘿,對不起,我有點匆忙結論:)是的,這是我想你想要的輸出。希望這可以幫助。 – Amadan 2010-05-22 16:49:18

+0

謝謝你。我現在會嘗試。 – Psyche 2010-05-22 17:03:11

0

假設您在使用數字鍵的排列,試試這個:

<ul> 
<?php 
foreach ($arr as $key => $item) { 
    // start new list if $key is divisible by 3 
    if ($key % 3 == 0) { 
     echo '<li><ul>'; 
    } 

    echo '<li><a href="…">…</a></li>'; 

    // end list if the next $key will start a new list 
    if (($key + 1) % 3 == 0) { 
     echo '</ul></li>'; 
    } 
} 

// end list if the last iteration did not do it 
if (($key + 1) % 3 != 0) { 
     echo '</ul></li>'; 
} 
?> 
</ul>