0

我有一个 foreach 循环,我需要确定单个项目的位置。项目总是 9。我使用这个代码。有人有更优雅的解决方案吗?

<?php
    foreach( $fruit as $key => $apple ); 
?>
    <li class="<?php if( ($key == 0) || ($key == 3) || ($key == 6) ) echo 'first'; if( ($key == 1) || ($key == 4) || ($key == 7) ) echo 'middle'; if( ($key == 2) || ($key == 5) || ($key == 8) ) echo 'last'; ?>"
          //stuff
     </li>
<?php endforeach; ?>
4

2 回答 2

1

如果您需要原始位置,则很可能应该使用for循环而不是foreach. 您还可以使用模运算符摆脱长度逻辑语句。

<?php
    for($i = 0; $i < count($fruit); $i++) {
        $apple = $fruit[i];
        $remainder = $i % 3
?>

    <li class="<?php 
        if($remainder == 0) echo 'first';
        if($remainder == 1) echo 'middle';
        if($remainder == 2) echo 'last'; ?>"

    // stuff

    </li>

<?php } ?>
于 2012-10-19T17:11:28.363 回答
1

根据评论请求,虽然 PHP 是一种语言,但我所做的只是波特

<?php foreach( $fruit as $key => $apple ); ?>
      <?php $position = $key % 3; ?>     
    <li class="<?php if( $position == 0) echo 'first'; 
                     if( $position == 1) echo 'middle'; 
                     if( $position == 2) echo 'last'; ?>"
          //stuff
     </li>
<?php endforeach; ?>

% 是整数除法的余数

0 / 3 = 0 remainder 0
1 / 3 = 0 remainder 1
2 / 3 = 0 remainder 2
3 / 3 = 1 remainder 0
...
8 / 3 = 2 remainder 2
于 2012-10-27T17:34:50.410 回答