web-gelistirme-sc.com

Foreach döngüsünün içindeki tarihe göre geçmiş öğeleri gizle

Tarihlere göre "çok yakında" öğeleri gösteren özel bir bileşen var. Bugünün tarihini geçmiş tüm eşyaları saklamaya çalışıyorum. Ancak gelecekteki öğeler yoksa, özel metin görüntülenmez.

Bir foreach döngüsü içinde nasıl yapabilirim? Veya nasıl php sonu ekleyebilirim? Yoksa bunu yapmanın daha iyi bir yolu var mı?

<?php foreach ($this->items as $item) : ?>
    <?php if($item->state ==1 && strtotime($item->event_date) > strtotime(JFactory::getDate())): ?>
        <div class="cont">
            <!-- Display values from DB -->
        </div>
    <?php elseif($item->state ==1 && strtotime($item->event_date) < strtotime(JFactory::getDate())): ?>
        <!-- Dont display anything -->
    <?php else: ?>
        <div class="cont">
            <!-- Display custom text -->
        </div>
    <?php endif; ?>
<?php endforeach; ?>
1
Kannan Naidu

"Else" bölümünü foreach döngüsünün dışında tutmanız gerekir, çünkü öğe yoksa foreach döngüsü asla çalışmaz:

<?php $item_displayed = false; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if($item->state ==1 && strtotime($item->event_date) > strtotime(JFactory::getDate())): ?>
        <?php $item_displayed = true; ?>
        <div class="cont">
            <!-- Display values from DB -->
        </div>
    <?php endif; ?>
<?php endforeach; ?>
<?php if (!$item_displayed) : ?>
    <div class="cont">
        <!-- Display custom text -->
    </div>
<?php endif; ?>

Temel olarak, bir öğenin görüntülenmediğini belirten bir değişken ekledim. Döngüdeki herhangi bir öğe görüntülenirse, bu değişkeni true olarak değiştiririm. Döngüden sonra öğe yoksa veya yaklaşan öğe yoksa özel metni görüntüleyeceğim.

3
David Fritsch