0

このコードを実際に機能させたいと思います。私が取得しようとしているのは、アイテムが 3 つの列に分かれていることです。

また、class0、class1、class2 の代わりに、列を「first」、「second」、「third」と呼びたいと思います。

すべてのアイテムが class0 と呼ばれるため、このコードは機能しません

<?php
$count = 0;
foreach ($this->items as $item) {
$count = $count == 3 ? 0 : $count++;
?>

<div class="<?php echo "class".$count ?>">
4

5 に答える 5

2

== 3簡単なテストは必要ありません。

<div class="classs<?php echo $count++ % 3?>">

トリックを行うでしょう。モジュロ演算:

$count = 0 -> 0 % 3 = 0
$count = 1 -> 1 % 3 = 1
$count = 2 -> 2 % 3 = 2
$count = 3 -> 3 % 3 = 0
$count = 4 -> 4 % 3 = 1
etc...

$count++カウントの最初の FIRST を返し、値をインクリメントするため、コードが機能していません。しかし、元の値が返されて $count に割り当てられるため、何度も何度も 0 を割り当てます。

あなたがやったなら++$count、それはうまくいったでしょう。(インクリメント THEN 新しい値を返します)

于 2013-04-29T14:51:26.700 に答える
1

これはうまくいくはずです:

<?php
  $count = 0;
  $names = ['first','second','third'];
  foreach ($this->items as $item) :
?>
<div class="class-<?=$names[$count++%3] ?>">
<?php
  endforeach;
?>
于 2013-04-29T14:51:29.983 に答える
0
<?php
$count = 0;
foreach ($this->items as $item) {
if ($count==0) {
    $class  = "first";
    $count++;
} else if ($count==1) {
    $class  = "second";
    $count++;
} else {
    $class  = "third";
    $count = 0;
}
?>

<div class="<?php echo $class ?>">

選択したケースの方が速いかもしれませんが、このようなものは機能するはずです

于 2013-04-29T14:50:06.070 に答える