0

The variable $fields['score'] returns a value between 1 to 5. Depending on the score it either returns <i class="fas fa-star"></i> or <i class="far fa-star"></i>. I currently have the code here below, which works perfectly. But I am looking for a less repetitive way to achieve this. Any suggestions?

<?php if ( $fields['score'] >= 1 ) {
   echo '<i class="fas fa-star"></i>';
} else {
   echo '<i class="far fa-star"></i>';
}
    
if ( $fields['score'] >= 2 ) {
   echo '<i class="fas fa-star"></i>';
} else {
   echo '<i class="far fa-star"></i>';
}
    
if ( $fields['score'] >= 3 ) {
   echo '<i class="fas fa-star"></i>';
} else {
   echo '<i class="far fa-star"></i>';
}
    
if ( $fields['score'] >= 4 ) {
   echo '<i class="fas fa-star"></i>';
} else {
   echo '<i class="far fa-star"></i>';
}
    
if ( $fields['score'] >= 5 ) {
   echo '<i class="fas fa-star"></i>';
} else {
   echo '<i class="far fa-star"></i>';
} ?>
Jonathan
  • 49
  • 1
  • 7
  • 2
    Something based on https://stackoverflow.com/questions/10250825/converting-numbers-to-visual-rating-stars. – Nigel Ren Feb 11 '21 at 16:43

1 Answers1

0

Try this:

        $value = $fields['score'];
        for ($i = 1; $i <= 5; $i++) {
            if ($value >= $i) {
                echo '<i class="fas fa-star"></i>' . PHP_EOL;
            } else {
                echo '<i class="far fa-star"></i>' . PHP_EOL;
            }
        }
WILLIAM DAZA
  • 118
  • 1
  • 7