如何在 php 中 foreach 语句的每三个结果上输出一个值


How to output a value on every third result of a foreach statement in php?

我的应用程序中有一个foreach语句,该语句回显了我的数据库结果列表:

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

我想:

在每三个结果中,给div 一个不同的类。我怎样才能做到这一点?

您可以使用计数器和模/模运算符,如下所示:

<?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>';
}
?>
<?php
foreach ($featured_projects as $i => $fp) {
    echo '<div class="result' . ($i % 3 === 0 ? ' third' : '') . '">';
    echo $fp['project_name'];
    echo '</div>';
}
?>

如果$featured_projects数组基于增量索引,您可以简单地使用索引和模%运算符。

否则,您必须添加一个计数器。

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

在此

循环中添加一个计数器,并检查计数器是否等于三并应用类。

使用计数器和模运算符很容易实现

<?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>';
}
?>
<?php
$i = 0;
foreach($featured_projects as $fp) {
    echo '<div class="'.($i++%3 ? 'result' : 'other_class').'">';
    echo $fp['project_name'];
    echo '</div>';
}
?>

让你的代码大部分保持机智的是

<?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)"周围使用for或while构造(请参阅 http://php.net/manual/en/function.each.php),这可能会导致更整洁的代码。

<?php
    $counter = 0;
    foreach ($featured_projects as $fp) {
        echo '<div class="result' . ($counter++ % 3 === 0 ? ' third' : '') . '">';
        echo $fp['project_name'];
        echo '</div>';
    }
?>

您可以在循环中添加计数器...请尝试以下操作...

 <?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>';
 }
 ?>

这是工作版本,对不起我的上一个版本:

<?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>