1

このコードに似たものを使用しています:

<?php foreach ($items as $item): ?>
    <div><?php echo $item['Item']['content']; ?></div>
<?php endforeach; ?>

そして、どの要素がすべてのアイテムであるかを知りたいのですが、行の 4 番目のアイテムごとにクラス「last-in-row」を追加したいからです。このコードのようなものを作るには?

<?php for ($i=1; $i <= $items.count; $i++) {
    echo "<div ";
    if ($i % 4 == 0) {
        echo " class=\"last-in-row\""; }
    echo ">$items[$i]</div>";
}; ?>
4

3 に答える 3

2

あなたがやろうとしていることはcss3で行うことができます。これは、後で3つまたは5つ続けて必要になる可能性があるため、より太いクラスを追加する必要がないことを意味します。

div:nth-child(4n+4) {
    ....
    clear: both;
    ....
}

css3 なしの CakePHP オプション

foreach ($items as $i => $item) {
    echo $this->Html->tag('div', $item['Item']['content'], array(
        'class' => ($i + 1) % 4 === 0 ? 'last' : null
    ));
}
于 2013-02-13T14:56:03.137 に答える
2

私はそれをテストしていませんが、次のように動作するはずです。

<?php 
$i = 1;
foreach ($items as $item) {
  $class = ($i % 4 == 0) ? '' : 'class="last-in-row"';
  echo "<div $class>{$item['Item']['content']}</div>";
  $i++;
} 
?>

ps $item['Item']['content']をサニタイズしていただければ幸いです。

于 2013-02-13T13:57:30.020 に答える
0

2 番目の例ではほとんどそれを持っていましたが、次$items.countの値に変更するだけです。count($items)

$itemsCount = count($items);
for ($i=1; $i <= $itemsCount ; $i++) {
    echo "<div ";
    if ($i % 4 == 0) {
        echo " class=\"last-in-row\""; }
    echo ">{$items[$i]}</div>";
}
于 2013-02-13T14:01:33.467 に答える