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