我想根据以下条件应用css类,但在应用此代码后,每个内容都会重复8次,如果我在div之前完成for循环,则不会应用css类。
<?php $size=count($Spacategories);
for($i=0;$i<8;$i++){
if($i==0 || $i==5){ ?>
<li class="valign">
<?php } elseif($i==1 || $i==7) { ?>
<li class="lalign">
<?php } elseif($i==2 || $i==6) { ?>
<li class="talign">
<?php } else { ?>
<li class="ralign">
<?php } ?>
<div class="image">
<img src="<?php echo $spacategory['thumb']; ?>" title="<?php echo $spacategory['name']; ?>" alt="<?php echo $spacategory['name']; ?>" />
</div>
<div class="text">
<h3><?php echo $spacategory['name']; ?></h3>
<p><?php echo substr($spacategory['description'],0,150); ?></p>
<a href="<?php echo $spacategory['href']; ?>" class="learmmore"><?php echo $text_view_more; ?></a>
</div>
</li>
<?php } } ?>
更改的所有实例
$spacategory
至
$Spacategories[$i]
这会解决问题。
此外,我看不出$text_view_more中填充了什么。您可能应该将其更改为$Spacategories中的某个数据点?
最后,似乎你需要根据类别的数量进行循环,所以改变
for($i=0;$i<8;$i++){
至
for($i=0;$i<$size;$i++){
在代码中,$spacategory
不是每次迭代中索引为$i
的$spacategories
中的项。您应该启动for
:
$spacategory = $spacategories[$i];
或者使用foreach
:
<?php
$classesIndexMap = array(
0 => 'valign',
1 => 'lalign',
2 => 'talign',
5 => 'valign',
6 => 'talign',
7 => 'lalign',
);
$html_view_more = htmlspecialchars($text_view_more, ENT_NOQUOTES, 'UTF-8');
?>
<?php foreach($spacategories as $i => $spacategory) : ?>
<li class="<?= isset($spacategory[$i]) ? $spacategory[$i] : 'ralign' ?>">
<div class="image">
<img src="<?= htmlspecialchars($spacategory['thumb'], ENT_QUOTES, 'UTF-8') ?>"
title="<?= htmlspecialchars($spacategory['name'], ENT_QUOTES, 'UTF-8') ?>"
alt="<?= htmlspecialchars($spacategory['name'], ENT_QUOTES, 'UTF-8') ?>" />
</div>
<div class="text">
<h3><?= htmlspecialchars($spacategory['name'], ENT_NOQUOTES, 'UTF-8') ?></h3>
<p><?= substr($spacategory['description'],0,150); ?></p>
<a href="<?= htmlspecialchars($spacategory['href'], ENT_QUOTES, 'UTF-8'); ?>"
class="learmmore"><?= $html_view_more ?></a>
</div>
</li>
<?php endforeach; ?>