Comparer un array avec plusieurs valeurs

sff

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;
 

rick38

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