我想按照以下条件应用css类,但在应用此代码后,每个内容重复8次,如果我在div之前完成循环,则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 } } ?>
答案 0 :(得分:0)
更改
的所有实例$spacategory
到
$Spacategories[$i]
这将解决它。
另外,我没有看到填充$ text_view_more的内容。您应该将其更改为$ Spacategories中的某些数据点吗?
最后,您似乎需要根据类别数进行循环,因此请更改
for($i=0;$i<8;$i++){
到
for($i=0;$i<$size;$i++){
答案 1 :(得分:0)
在您的代码中,$spacategory
不是$spacategories
中每个迭代中索引为$i
的项目。您应该已经开始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; ?>