我这边实现的主要是根据上周的排名,来与目前的排名进行对比,如果排名上升,就是上升的红色箭头,箭头随排名发生改变。
具体看部分代码:
rankarray是存储上周的排名的数组;
count_same是相同排名的计数次数。
主要是,先将排名第一的进行单独判断,之后的排名和前一个排名进行判断,如果排名相同,那么使得当前的index排名和前一个的相同,因为他们的排名实际上是一致的,所以上升和下降也应该相同。
<?php
$rank_array = array();
$count_same = 0; ?>
<?php foreach ($companies as $index => $company) {?>
<div class="infor<?php echo $else_index;?> info">
<?php $index++; ?>
<div class="index"><?php echo $index; ?></div>
<?php array_push($rank_array, $company->last_rank);
?>
<?php if ($index == 1) {
if ($index - ($company->last_rank) > 0){ ?>
<div class="rank-down rank"></div>
<?php }
elseif ($index - ($company->last_rank) < 0) { ?>
<div class="rank-up rank"></div>
<?php }
else{ ?>
<div class="rank-still rank"></div>
<?php }
}else{
if ($rank_array[$index-1] == $rank_array[$index-2]){
$count_same++;
$index_a = $index - $count_same;
}else{
$index_a = $index;
}
if ($index_a - ($company->last_rank) > 0){ ?>
<div class="rank-down rank"></div>
<?php }
elseif ($index_a - ($company->last_rank) < 0) { ?>
<div class="rank-up rank"></div>
<?php }
else{ ?>
<div class="rank-still rank"></div>
<?php }
} ?>
实现效果图:
在做关于算法的时候,如果遇到不明白的错误,最好拿张纸和笔,自己按照算法流程过一遍,这样容易发现问题。