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;
}
 
Discussions similaires
Haut