IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

(bool)0 !== FALSE : Soucis de ccompréhension


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut (bool)0 !== FALSE : Soucis de ccompréhension
    Bonjour,

    J'aurai aimé saisir quelque chose que je trouve important.

    PHP, lors d'un cast en booléen, convertit tout les chiffres/nombres différent de 0 en true et le chiffre 0 en false.

    retourne true
    retourne false

    Dans la mise en pratique , ça ma posé soucis avec le filtre_var. filtre_var retourne l'entier en paramètre si ok , false sinon.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(filter_var(0,FILTER_VALIDATE_INT,array('options' => array('min_range' => 0, 'max_range' => 100)))!==FALSE)
    Ici, en rajoutant !== , cela retourne true avec l'entier 0.

    !== permet de comparer le resultat et le type. Du coup , si j'ai bien compris, on compare l'entier 0 au booléen false , ok car ce n'est pas égal , donc (bool) true renvient donc true ?

    Cela me pose soucis

  2. #2
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Il me semble que tu devrais plutôt utiliser l'opérateur "!=" plutôt que "!=="

    Et la tout simplement, si ta fonction retourne 0 (qui est l'équivalent de false) alors ce n'est pas différent de FALSE, on ne passe pas dans ton if
    Si ta fonction retourne une valeur quelconque, donc ton if est OK.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Le != ne passe pas.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne comprends pas ton problème.
    0 est valide dans les condition de ton filtre de vérification.
    La fonction renvoit donc 0 et ta condition if est validée.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Le truc qui me gère c'est que dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(filter_var(0,FILTER_VALIDATE_INT,array('options' => array('min_range' => 0, 'max_range' => 100)))!==FALSE) echo 'ok'; else echo 'non';
    cela écrit "ok"

    Mais si j'enlève un seul égal , pour qu'il y ait != FALSE , le 0 ne passe plus. D'ou le fait de comparer le type également avec !==.

    Du coup, il y a une histoire ce cast, et j'aurai bien aimé savoir comment cela se passe exactement .

    filter retourne int(0) et nous avons la comparaison avec FALSE. Mais qu'est ce qu'il se passe en premier ? LE cast de int(0) en false , ou bien la comparaison de int(0) au false puis le cast ?

  6. #6
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Je ne suis pas sûr de ce que tu veux dire, mais si j'ai bien compris, tu demandes si lors d'une comparaison dans une structure conditionnelle, les cast (par exemple bool(0) ) sont effectués avant la comparaison avec une valeur ?

    Si c'est bien ca te question, je te répondrais que toutes ta ligne est éxécutée avant d'être comparée, donc dans ton exemple avec filter_var(), le résultat final (retour de la fonction casté) est comparé suivant ton opérateur, à la valeur FALSE.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/03/2014, 13h16
  2. bool (false) pdo
    Par stade13 dans le forum Langage
    Réponses: 2
    Dernier message: 04/03/2013, 12h09
  3. [MySQL] Select Count retourne un bool à false ?
    Par old_pierre dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/01/2012, 10h34
  4. bool(false) variable vide
    Par thomix68 dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2011, 13h12
  5. Réponses: 2
    Dernier message: 03/10/2002, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo