【问题标题】:php foreach div class issuephp foreach div类问题
【发布时间】:2012-03-17 10:06:42
【问题描述】:

我在下面有一些 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" : ""; ?>">

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

【问题讨论】:

  • $key 有什么价值?

标签: php foreach key foreach-loop-container


【解决方案1】:

($key%2) ? "active" : ""; 将为任何不能被 2 整除的$key 输出active。请参阅维基百科关于modulo operation 的页面。

假设您对$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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 如果您有任何特殊需要不要在代码中使用无限循环,请不要这样做。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-27
      • 1970-01-01
      • 2011-08-04
      • 2017-05-18
      • 2011-07-22
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      相关资源
      最近更新 更多