Question PHP : Différence de code

playboy-1990 Messages postés 593 Statut Membre -  
monkey_monk Messages postés 611 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je voudrais savoir la différence entre
<?php
	if($message!="")
	{echo 'salut';}	
else
{echo 'rien';}
	?>

et ce code
<?php
	if (!empty($message))
	{echo 'salut';}	
else
{echo 'rien';}
	?>

7 réponses

  1. Melooo Messages postés 1476 Statut Membre 84
     
    Bonjour,
    Selon le manuel php, empty permet de vérifier qu'une valeur vaut soit 0, vide ou pas définie...
    Alors que l'opérateur != vérifie seulement si c'est différent
    0
  2. playboy-1990 Messages postés 593 Statut Membre 273
     
    Oui mais
    !empty(
    c'est l'inverse
    Donc
    ($message!="")
    et
    (!empty($message))

    font la même chose (vérifier si il vaut une valeur ?)
    0
  3. monkey_monk Messages postés 611 Date d'inscription   Statut Membre Dernière intervention   132
     
    $message != ""
    vérifie si $message n'est pas une chaine de caractère vide.

    !empty( $message )
    vérifie si $message contient qque chose, caractère ou autre.
    0
  4. playboy-1990 Messages postés 593 Statut Membre 273
     
    Donc c'est la même chose ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. monkey_monk Messages postés 611 Date d'inscription   Statut Membre Dernière intervention   132
     
    ...comme je le dis plus haut, non.
    Ce n'est pas pareil, mais dans certains cas la différence ne pose aucuns problèmes ! ;-)

    La première forme sert à vérifier 2 choses principalement : si la variable est de type caractère et si elle est vide.
    La seconde vérifie uniquement si la variable est vide et ne se préoccupe pas de savoir si elle est de type numérique ou autre.

    C'est plus clair comme ceci ? ^
    0
  7. coeus Messages postés 3296 Statut Membre 120
     
    En fait non, le $message != "" ne vérifie pas le type de variable. Pour ça, il faudrait que ce soit $message !== "" ; alors là il faudrait que la variable soit un string ET qu'elle ne contienne aucun caractère.
    Dans le cas présent, je pense que les deux reviennent pas mal au même. Il y a peut-être quelques exceptions, mais aucune ne me vient à l'esprit présentement.
    0
  8. monkey_monk Messages postés 611 Date d'inscription   Statut Membre Dernière intervention   132
     
    Effectivement,
    == est un opérateur d'égalité et === un opérateur d'identité, my bad.

    Donc, si on fait :
    $message = "4";
    $test = 4;
    
    if($message == $test) {
      // cette condition est juste (TRUE)
    }
    if($message === $test){
      // cette condition est fausse (FALSE)
    }
    


    Sorry, sorry ! ^^'
    0