PHP循环评级栏错误

时间:2016-11-07 16:37:18

标签: php loops rating-system

我有一个5分评级系统我试图改变它如何显示评级。

所以在5点之前所有白色如果没有评级,那么颜色在评级蓝色..我会通过fontawesome字形显示这些点。所以它会输出其中的5个。

但现在我正在尝试更改它,其中5分评级将显示进度条,5分将用作进度长度的百分比。

对不起,如果我含糊不清,我可以根据需要解释更多。它当前显示所有条形和评级值,但只显示一次。所以它没有按照我想要的方式运作。

<?php if(count($languages) > 0) { ?>

<div class="col-md-6">
    <ul class="no-bullets">

    <?php foreach($languages as $index => $language) { ?>

        <li>
            <span class="skillset-title"><?= $language->title; ?> (<?= $language->endorsement; ?>)</span>
            <span class="skillset-rating">

            <?php
            $levelpercentage = 0;
            for($stars == 1; $stars <= 5; $stars++) {

                if ($stars == 5):

                    echo $levelpercentage = 100;

                elseif ($stars == 4):

                    echo $levelpercentage = 80;

                elseif ($stars == 3):

                    echo $levelpercentage = 60;

                elseif ($stars == 2):

                    echo $levelpercentage = 40;

                elseif ($stars == 1):

                    echo $levelpercentage = 20;

                endif;

            ?>

                <div class="progress-bar blue stripes">
                    <span style="width: <?= ($language->level >= $stars) ? $levelpercentage : '0'; ?>%;"></span>
                </div>

            <?php  } ?>

            </span>
        </li>

        <?php if(ceil(count($languages) / 2) == $index + 1) { ?>

    </ul>
</div>
<div class="col-md-6">
    <ul class="no-bullets">

        <?php } ?>

    <?php } ?>

    </ul>
</div>

<?php } else { ?>

<div class="alert alert-warning">
    No languages were found!
</div>

<?php } ?>

2 个答案:

答案 0 :(得分:0)

  

它当前显示所有条形和评级值

这是因为您在for循环中分配并回显了条形和评级值。

$stars变量分配了从1到5的每个值,在每一步显示条形。只需删除for循环即可正常工作(假设您使用已定义的$stars变量)

奖励:因为我心情愉快,所以我必须告诉你,建立$levelpercentage变量的方法比使用if...else更简单的方法来构建{1}}到5,只需使用:

$levelpercentage = $stars * 20;

答案 1 :(得分:0)

谢谢!这真的帮助了我。试图简化我想要做的事情。这就是我所做的,它似乎正在发挥作用。

<?php if(count($languages) > 0) { ?>

<div class="col-md-6">
    <ul class="no-bullets">

    <?php foreach($languages as $index => $language) { $stars = 0; $stars <= 5; $stars++; ?>

        <li>
            <span class="skillset-title"><?= $language->title; ?> (<?= $language->endorsement; ?>)</span>
            <span class="skillset-rating">
                 <div class="progress-bar blue stripes">
                     <span style="width: <?= ($language->level >= $stars) ? $language->level * 20 : 0; ?>%;"></span>
                 </div>
            </span>
        </li>

        <?php if(ceil(count($languages) / 2) == $index + 1) { ?>

    </ul>
</div>
<div class="col-md-6">
    <ul class="no-bullets">

        <?php } ?>

    <?php } ?>

    </ul>
</div>

<?php } else { ?>

<div class="alert alert-warning">
    No languages were found!
</div>

<?php } ?>