0

foreachを使用している以下のphpコードがあります。

<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と、「アイテム」のクラスを持つためにforeach内の他のすべてのdivクラスが必要です。

以下のコードのどこが間違っていますか?

  <?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" : "";は、2 で割り切れないものを出力activeします。モジュロ演算に関するウィキペディアのページを参照してください。$key

に数値インデックスを使用し$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;} ?>">

最初の実行で$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 のすべての奇数の値ですが、条件は常に true と評価されると思います。($key ==0)? "active" : "" 最初のものだけをアクティブにするために使用 します。

于 2012-03-17T10:17:10.413 に答える