Commande strcmp

Résolu/Fermé
fhav Messages postés 252 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 25 novembre 2009 - 27 mars 2009 à 10:13
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 27 mars 2009 à 10:53
Bonjour,
en fait en étudiant le php , j'ai trouvé cette ligne de commande
if (strcmp($v_log['log'], $login))
{
traitement 1
}

else {
traitement 2
}


peut-on écrire ça ?
moi je pensai que strcmp retourne une valeur positive ou négative
quelqu'un peu m'expliquer ça ?

thanks a lot

3 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
27 mars 2009 à 10:43
salut,

moi je pensai que strcmp retourne une valeur positive ou négative
c'est bien ça.

quelqu'un peu m'expliquer ça ?
en fait le test indique si les chaînes sont différentes (le résultats est positif ou négatif ce qui une fois converti en booléen donne TRUE) ou identiques (le résultat est égal à zéro, converti en FALSE).
if (strcmp($v_log['log'], $login)) // si le retour vaut autre chose que 0, c-à-d TRUE
{
traitement 1
}

else { // sinon le retour vaut 0, c-à-d FALSE
traitement 2
} 
1
fhav Messages postés 252 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 25 novembre 2009 5
27 mars 2009 à 10:47
merci i understand
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
27 mars 2009 à 10:53
soit dit en passant, pour avoir un code plus propre et plus sûr il faudrait tester réellement la valeur de retour (et non pas la conversion), donc tester aussi le type.
la plus simple est d'inverser la condition
if (strcmp($v_log['log'], $login) === 0) // là tu es sûr que la fonction a bien retourné 0 et pas simplement quelque chose d'équivalent à FALSE
{
traitement 2
}
else {
traitement 1
} 
0