php foreach выпуск класса div - PullRequest
0 голосов
/ 17 марта 2012

У меня есть некоторый php-код ниже, где я использую foreach.

<div class="carousel-inner">
  <?php if(count($items)): ?>
    <?php foreach($items as $key=>$item) : ?>      
      <div class="item <?php echo ($key%2) ? "active" : ""; ?>">
        <?php
                $extra_imagefilename = md5("Image".$item->id);
                $extra_imagepath = 'media/k2/items/src/'.$extra_imagefilename.'.jpg';
                preg_match_all('/img src="([^"]+)"/i', $item->introtext . $item->fulltext, $matches); ?>
                <?php if(@file_exists($extra_imagepath)) { ?>
                <img src="<?php echo $extra_imagepath; ?>" style="alt="<?php echo $item->title; ?>" title="<?php echo $item->title; ?>" />
                <?php } ?>
      </div>
    <?php endforeach; ?>                         
    <?php endif; ?> 
</div>

Мне нужен 1-й div, который, кажется, имеет класс с именем item active и все другие классы div в foreachиметь класс "item".

Где я ошибся с приведенным ниже кодом?

  <?php if(count($items)): ?>
    <?php foreach($items as $key=>$item) : ?>      
      <div class="item <?php echo ($key%2) ? "active" : ""; ?>">

Любая помощь / совет будет очень признателен.Спасибо

Ответы [ 3 ]

2 голосов
/ 17 марта 2012

($key%2) ? "active" : ""; выведет active для любого $key, который не делится на 2. См. Страницу Википедии об операции по модулю .

Если вы используете числовые индексы для $item и они последовательно начинаются с 0, вы можете просто написать

<div class="item <?php echo ($key == 0) ? "active" : ""; ?>">

, чтобы первые div имели активную class.

Если вы не знаете о значениях $key, вы можете просто использовать флаг:

<?php $first = true; foreach($items as $key=>$item) : ?>      
    <div class="item <?php if ($first){echo "active"; $first = false;} ?>">

При первом запуске $first будет true и ваш div получает свой класс active.На любом другом запуске это будет false.

1 голос
/ 17 марта 2012

Вы можете использовать функцию сброса в качестве проверки.

<?php if(count($items)): ?>
  <?php foreach($items as $key=>$item) : ?>      
    <div class="item <?php echo ($item==reset($items) ? "active" : ")"; ?>">
0 голосов
/ 17 марта 2012

$key%2 - каждое нечетное значение $ key, но я думаю, что условие всегда будет иметь значение true. Используйте ($key ==0)? "active" : "", чтобы получить только первый активный.

...