确定foreach循环中的位置

时间:2012-10-19 17:09:45

标签: php foreach position

我有一个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; ?>

2 个答案:

答案 0 :(得分: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 } ?>

答案 1 :(得分: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