Comparer un array avec plusieurs valeurs

  • Auteur de la discussion Auteur de la discussion sff
  • Date de début Date de début
WRInaute impliqué
Bonjour,

je viens de me faire cette petite fonction mais malheureusement je n'ai seulement un echo '12' qui s'affiche alors que normalement le 13 et 14 devrait également apparaître. Je ne comprends pas. Merci pour votre aide



Code:
$tableau = array("431","455","497");
 
function compare($value_min, $value_max, $array){
  
    for( $i = 0 ; $i < count($array) ; $i++ ) {
      
        if ($array[$i] >= $value_min AND $array[$i] <= $value_max) {
          
           return true;
      
        }else{
            
            return false;
            
            }
    }
}


echo (compare(199, 219, $tableau) == true) ? 1: 0;
echo (compare(220, 240, $tableau) == true) ? 2: 0;
echo (compare(241, 261, $tableau) == true) ? 3: 0;
echo (compare(262, 282, $tableau) == true) ? 4: 0;
echo (compare(283, 303, $tableau) == true) ? 5: 0;
echo (compare(304, 324, $tableau) == true) ? 6: 0;
echo (compare(325, 345, $tableau) == true) ? 7: 0;
echo (compare(346, 366, $tableau) == true) ? 8: 0;
echo (compare(367, 387, $tableau) == true) ? 9: 0;
echo (compare(388, 408, $tableau) == true) ? 10: 0;
echo (compare(409, 429, $tableau) == true) ? 11: 0;
echo (compare(430, 450, $tableau) == true) ? 12: 0;
echo (compare(451, 471, $tableau) == true) ? 13: 0;
echo (compare(472, 498, $tableau) == true) ? 14: 0;
 
WRInaute passionné
Le problème est ton "else", il arrête la fonction dès la 1e valeur testée false.
Tu peux faire :
Code:
function compare($value_min, $value_max, $array)
{
    $ct = count($array);

    for ($i = 0; $i < $ct; $i++)
        if ($array[$i] >= $value_min && $array[$i] <= $value_max)
            return true;

    return false;
}
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut