Renvoyer l'entier le plus proche d'une variable

[Résolu]
Signaler
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
-
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
-
Bonjour,

J'ai un array :

<hr size="2" width="100%" />    $num_min = array(32,16,8,4,2,1);
<hr size="2" width="100%" />
Et j'ai une variable $a j'aimerais pouvoir renvoyer la plage de nombre dans lequel ça se situe plus precisement le premier chiffre

exemple pour 20 le chiffre qui m'interesse c'est 16.

J'espere que je suis assez claire
Merci & Bonne prog

8 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello,

un truc dans le genre ?

<?php
function closerVal ($aTmp, $iCheck) {
    sort ($aTmp, SORT_NUMERIC);
    foreach ($aTmp as $iClef => $iVal) {
        if ($iVal > $iCheck) {
            if (isset ($aTmp[$iClef - 1]) && $aTmp[$iClef - 1] < $iCheck) {
                return $aTmp[$iClef - 1];
            } else {
                return $iVal;
            }
        }
    }
    return end ($aTmp);
}
$num_min = array(32,16,8,4,2,1);
$a = 20;
echo $b = closerVal ($num_min, $a);
?>
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Pourrais-tu developper un peu plus ton probleme STP ? J'ai pas tout saisie... tu veux renvoyer une suite ou juste un entier ?

@+
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
Je veux renvoyer l'entier ( inferieur ) le plus proche de la variable $a
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Est ce que ca marche?

function getMin( $array, $a )
{
    $min = $array[ 0 ];
    $count = count( $array );

    for( $i = 1; $i < $count; $i++ )
       if( $array[$i] > $a && $array[$i] < $min )
          $min = $array[$i];

    return $min;
}

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
Je te remercie 18466 coockiesch  mais ton code ne marche pas

=58031 malalam  merci de ton code ça marche niquel
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Tu prend ton tableau, tu fais un sort() dessus, tu le parcours avec un foreach() (histoire de faire simple) et quand tu obtiens une valeur plus grande que ce que tu cherches, tu arretes...

$A = 20;
$NumMin = array(32, 16, 8, 4, 2, 1);
foreach ( $NumMin as $Value )
{
    if ( $Value > $A ) {
       echo'Valeur inferieur la plus proche :', $A, '
';
       break;
    }
}
Remarque que sa te renvoi l'entier inferieur le plus proche. Tu peut ensuite le modifier pour qu'il te renvoi l'entier superieur le plus proche. Ensuite tu les sous-trait un avec ta valeur et tu regardes la valeur la plus petite que tu obtiens, sa sera celle que tu cherches !

@+
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Arf le temps que j'ecrives, tout le monde a repondu :-(

@+
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
Je te remercie quand même
Sympa