Commande strcmp

Résolu
fhav Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   -  
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   -
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
A voir également:

3 réponses

Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
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   Statut Membre Dernière intervention   5
 
merci i understand
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
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