10

foreachのアプリには、データベースの結果のリストをエコーするステートメントがあります。

<?php

foreach($featured_projects as $fp) {
  echo '<div class="result">';
  echo $fp['project_name'];
  echo '</div>';
}

?>

私はしたいと思います:

3 回の結果ごとに、div に別のクラスを与えます。どうすればこれを達成できますか?

4

11 に答える 11

21

以下のように、カウンターとモジュロ/モジュラス演算子を使用できます。

<?php

// control variable
$counter = 0;

foreach($featured_projects as $fp) {

    // reset the variable
    $class = '';

    // on every third result, set the variable value
    if(++$counter % 3 === 0) {
        $class = ' third';
    }

    // your code with the variable that holds the desirable CSS class name
    echo '<div class="result' . $class . '">';
    echo $fp['project_name'];
    echo '</div>';
}

?>
于 2012-05-04T08:32:13.330 に答える
6
<?php

foreach ($featured_projects as $i => $fp) {
    echo '<div class="result' . ($i % 3 === 0 ? ' third' : '') . '">';
    echo $fp['project_name'];
    echo '</div>';
}
?>
于 2012-05-04T08:40:33.560 に答える
1

$featured_projects配列がインクリメンタル インデックスに基づいている場合は、単にインデックスとモジュロ%演算子を使用できます。

それ以外の場合は、カウンターを追加する必要があります。

http://php.net/manual/en/language.operators.arithmetic.php

于 2012-05-04T08:31:19.807 に答える
0

これは動作中のバージョンです。以前のバージョンで申し訳ありません:

<?php
$featured_projects[0]['project_name'] = "pippo";
$featured_projects[1]['project_name'] = "pippo2";
$featured_projects[2]['project_name'] = "pippo3";

$class[0] = "class1";
$class[1] = "class2";

$i=0;
foreach($featured_projects as $fp) {
  $i++;
  if ($i == 3) {
    $c = $class[1];
    $i=0;
  } else {
    $c = $class[0];
  }
  echo "<div class=\"$c\">";
  echo $fp['project_name'];
  echo "</div>\n";
}
?>

プロデュース:

<div class="class1">pippo</div>
<div class="class1">pippo2</div>
<div class="class2">pippo3</div>
于 2012-05-04T08:35:14.050 に答える
0

ループにカウンターを追加できます...次を試してください...

 <?php 
 $i = 0; 
 foreach($featured_projects as $fp) {
 $i = ++$i;
 if(($i%3) == 0)
 {
  $class1 = 'test1';
 }
 else
 {
 $class1 = 'test2';
 }
       echo '<div class="'.$class1.'">';
       echo $fp['project_name'];
       echo '</div>';
 }
 ?>
于 2012-05-04T08:35:36.390 に答える
0
<?php 
foreach($featured_projects as $fp) {
    if(++$i % 3 === 0) {
        $class = ' something';
    } else {
        $class = '';
    }
    echo '<div class="result' . $class . '">';
    echo $fp['project_name'];
    echo '</div>';
}
?>
于 2012-05-04T08:36:02.623 に答える
0
<?php
$i = 0;
foreach($featured_projects as $fp) {
    echo '<div class="'.($i++%3 ? 'result' : 'other_class').'">';
    echo $fp['project_name'];
    echo '</div>';
}
?>
于 2012-05-04T08:36:16.693 に答える
0

コードをほとんど無傷のままにするのは

<?php 
$i = 1;
foreach($featured_projects as $fp) {
printf ('<div class="%s">',(($i % 3) ? "result" : "result_every_third" ));
echo $fp['project_name'];
echo '</div>';
$i++;
}
?>

しかし、"each($featured_projects)" ( http://php.net/manual/en/function.each.phpを参照) の前後に for または while 構造を使用することを検討することをお勧めします。

于 2012-05-04T08:37:04.190 に答える
0
<?php
    $counter = 0;

    foreach ($featured_projects as $fp) {
        echo '<div class="result' . ($counter++ % 3 === 0 ? ' third' : '') . '">';
        echo $fp['project_name'];
        echo '</div>';
    }
?>
于 2012-05-04T08:38:29.097 に答える
0

このループにカウンターを追加し、カウンターが 3 に等しいかどうかを確認し、クラスを適用します。

于 2012-05-04T08:31:38.380 に答える
0

カウンターとモジュロ演算子を使用すると、これを簡単に実装できます

于 2012-05-04T08:31:47.243 に答える