PHP ve HTML ile ilişkilendirilebilir bir dizi görüntüleme sıkıntılar

4 Cevap

Ben aşağıdaki HTML kodu vardır:

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

Ben de bir PHP dizi var:

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
        )

)

Ben [yinelenen yapısı] içeride bu kodu tekrar nasıl bilmek ister ve tekrarlanan her yapı için ekran 3 farklı haber olurdu.

Çıktı böyle olmalı:

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

Teşekkür ederim.

4 Cevap

3 elemanların diziler bir diziye verileri bölmek:

$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);
}

Sonra, görüntülemek için:

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

Eğer fikrinizi değiştirirseniz ve grup başına 4 haber istediğinizde bu yolla, sabit değerini değiştirmek Juste.

Sorularınız gerçekten mantıklı değil; ama dizideki haber öğelerin bir listesini almak için böyle bir şey yapmak isterdim

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

Eğer veri ikinci boyutun eksikliği hakkında benim soruya cevap vermedi - Ben (sonunda "haber ticker" yorumun bir ipucu hafif yararlı oldu) üç parçalar halinde düz bir listesini dilim isteyen olabilir düşündüm. Eğer öyleyse, bu (yani 0'dan başlayarak ardışık endeksleri vardır) sürece $ öğeleri gibi gerçek bir dizidir çalışması gerekir:

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

Sayısal tuşları ile bir yelpazeye sahip olduğunuzu varsayarak, bu deneyin:

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