0

我在下面有一些 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>

我需要第一个 div 似乎有一个名为“item active”的类,而 foreach 中的所有其他 div 类都有一个“item”类。

下面的代码我哪里出错了?

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

任何帮助/建议将不胜感激。谢谢

4

3 回答 3

2

($key%2) ? "active" : "";将输出active任何$key不能被 2 整除的内容。请参阅 Wikipedia's page about the modulo operation

假设你使用数字索引$item并且它们是连续的,0你可以写

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

要先divclass主动。

如果您不知道您的值,则$key可以使用一个标志:

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

在第一次运行$firsttrue,你div会得到它的类active。在任何其他运行中,它将是false.

于 2012-03-17T10:15:05.303 回答
1

您可以使用重置功能作为检查。

<?php if(count($items)): ?>
  <?php foreach($items as $key=>$item) : ?>      
    <div class="item <?php echo ($item==reset($items) ? "active" : ")"; ?>">
于 2012-03-17T10:16:14.077 回答
0

$key%2是 $key 的每个奇数值,但我认为条件将始终评估为真。用于 ($key ==0)? "active" : "" 仅激活第一个。

于 2012-03-17T10:17:10.413 回答