Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Bonjour,
Le 07/07/2009 15:26, Olivier Masson a écrit :
Pour une inclusion dans une base SQL, j'avais besoin de distinguer la valeur 0 (zéro) d'une variable et la valeur NULL.
La variable à tester est issue d'un objet. Je la type en string car en int il me convertit NULL en 0. $a = (string)$obj->bidule;
Euh... et pourquoi as-tu besoin de changer son type ? « $a = $obj->bidule; » ne convient pas ?
Mais ensuite, j'ai du résoudre mon problème en testant ($a === '') car ni !isset($a), ni is_null($a) ne renvoient TRUE.
Est-ce normal ?
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné une valeur de type string (transtypage en string de $obj->bidule), la variable existe (d'où isset répond TRUE et !isset répond FALSE), et elle est de type string et non de type null (d'où is_null répond FALSE).
Bonjour,
Le 07/07/2009 15:26, Olivier Masson a écrit :
Pour une inclusion dans une base SQL, j'avais besoin de distinguer la
valeur 0 (zéro) d'une variable et la valeur NULL.
La variable à tester est issue d'un objet.
Je la type en string car en int il me convertit NULL en 0.
$a = (string)$obj->bidule;
Euh... et pourquoi as-tu besoin de changer son type ?
« $a = $obj->bidule; » ne convient pas ?
Mais ensuite, j'ai du résoudre mon problème en testant ($a === '') car
ni !isset($a), ni is_null($a) ne renvoient TRUE.
Est-ce normal ?
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné
une valeur de type string (transtypage en string de $obj->bidule), la
variable existe (d'où isset répond TRUE et !isset répond FALSE), et
elle est de type string et non de type null (d'où is_null répond FALSE).
Pour une inclusion dans une base SQL, j'avais besoin de distinguer la valeur 0 (zéro) d'une variable et la valeur NULL.
La variable à tester est issue d'un objet. Je la type en string car en int il me convertit NULL en 0. $a = (string)$obj->bidule;
Euh... et pourquoi as-tu besoin de changer son type ? « $a = $obj->bidule; » ne convient pas ?
Mais ensuite, j'ai du résoudre mon problème en testant ($a === '') car ni !isset($a), ni is_null($a) ne renvoient TRUE.
Est-ce normal ?
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné une valeur de type string (transtypage en string de $obj->bidule), la variable existe (d'où isset répond TRUE et !isset répond FALSE), et elle est de type string et non de type null (d'où is_null répond FALSE).
Aurelgadjo
Olivier Miakinen a écrit :
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné une valeur de type string (transtypage en string de $obj->bidule), la variable existe (d'où isset répond TRUE et !isset répond FALSE), et elle est de type string et non de type null (d'où is_null répond FALSE).
Donc on peut dire que null est un type qui ne peut rien contenir ? Quand je fais if($toto == null) , est-ce que dans ce cas je peux faire if($toto == int) ?! (j'en doute mais ?)
Olivier Miakinen a écrit :
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné
une valeur de type string (transtypage en string de $obj->bidule), la
variable existe (d'où isset répond TRUE et !isset répond FALSE), et
elle est de type string et non de type null (d'où is_null répond FALSE).
Donc on peut dire que null est un type qui ne peut rien contenir ?
Quand je fais if($toto == null) , est-ce que dans ce cas je peux faire
if($toto == int) ?! (j'en doute mais ?)
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné une valeur de type string (transtypage en string de $obj->bidule), la variable existe (d'où isset répond TRUE et !isset répond FALSE), et elle est de type string et non de type null (d'où is_null répond FALSE).
Donc on peut dire que null est un type qui ne peut rien contenir ? Quand je fais if($toto == null) , est-ce que dans ce cas je peux faire if($toto == int) ?! (j'en doute mais ?)
Olivier Miakinen
Le 07/07/2009 16:08, Aurelgadjo me répondait :
Donc on peut dire que null est un type qui ne peut rien contenir ?
J'allais répondre la chose suivante : « le type null (ou NULL) est un type qui ne peut contenir qu'une seule valeur, la valeur null (ou NULL) ». Mais à la lecture de la doc il semble que ton interprétation soit plus proche de la réalité que la mienne : <http://fr.php.net/manual/en/language.types.null.php> <http://fr.php.net/manual/fr/language.types.null.php>
Il y a pourtant une différence entre une variable non initialisée et une ayant la valeur nulle, comme on peut le voir dans l'exemple #1 de la page <http://fr.php.net/manual/fr/function.is-null.php> (seule la première déclenche une erreur de type E_NOTICE).
Quand je fais if($toto == null) ,
... c'est en général équivalent à ($toto == '') ou ($toto == 0), à cause des transtypages implicites avec la comparaison ==. Pour vraiment tester la valeur null *et* le type null, il faut utiliser ===, ou bien la fonction is_null().
est-ce que dans ce cas je peux faire if($toto == int) ?!
Eh non ! Contrairement à null qui est à la fois un type et une valeur, int n'est qu'un type. Mais tu as quelques fonctions telles que is_int(), is_float() ou is_numeric() qui te permettent de faire ce genre de chose.
Le 07/07/2009 16:08, Aurelgadjo me répondait :
Donc on peut dire que null est un type qui ne peut rien contenir ?
J'allais répondre la chose suivante : « le type null (ou NULL) est
un type qui ne peut contenir qu'une seule valeur, la valeur null (ou
NULL) ». Mais à la lecture de la doc il semble que ton interprétation
soit plus proche de la réalité que la mienne :
<http://fr.php.net/manual/en/language.types.null.php>
<http://fr.php.net/manual/fr/language.types.null.php>
Il y a pourtant une différence entre une variable non initialisée et
une ayant la valeur nulle, comme on peut le voir dans l'exemple #1 de
la page <http://fr.php.net/manual/fr/function.is-null.php> (seule la
première déclenche une erreur de type E_NOTICE).
Quand je fais if($toto == null) ,
... c'est en général équivalent à ($toto == '') ou ($toto == 0), à cause
des transtypages implicites avec la comparaison ==. Pour vraiment tester
la valeur null *et* le type null, il faut utiliser ===, ou bien la
fonction is_null().
est-ce que dans ce cas je peux faire
if($toto == int) ?!
Eh non ! Contrairement à null qui est à la fois un type et une valeur,
int n'est qu'un type. Mais tu as quelques fonctions telles que is_int(),
is_float() ou is_numeric() qui te permettent de faire ce genre de chose.
Donc on peut dire que null est un type qui ne peut rien contenir ?
J'allais répondre la chose suivante : « le type null (ou NULL) est un type qui ne peut contenir qu'une seule valeur, la valeur null (ou NULL) ». Mais à la lecture de la doc il semble que ton interprétation soit plus proche de la réalité que la mienne : <http://fr.php.net/manual/en/language.types.null.php> <http://fr.php.net/manual/fr/language.types.null.php>
Il y a pourtant une différence entre une variable non initialisée et une ayant la valeur nulle, comme on peut le voir dans l'exemple #1 de la page <http://fr.php.net/manual/fr/function.is-null.php> (seule la première déclenche une erreur de type E_NOTICE).
Quand je fais if($toto == null) ,
... c'est en général équivalent à ($toto == '') ou ($toto == 0), à cause des transtypages implicites avec la comparaison ==. Pour vraiment tester la valeur null *et* le type null, il faut utiliser ===, ou bien la fonction is_null().
est-ce que dans ce cas je peux faire if($toto == int) ?!
Eh non ! Contrairement à null qui est à la fois un type et une valeur, int n'est qu'un type. Mais tu as quelques fonctions telles que is_int(), is_float() ou is_numeric() qui te permettent de faire ce genre de chose.
Pour une inclusion dans une base SQL, j'avais besoin de distinguer la valeur 0 (zéro) d'une variable et la valeur NULL.
La variable à tester est issue d'un objet. Je la type en string car en int il me convertit NULL en 0. $a = (string)$obj->bidule;
Euh... et pourquoi as-tu besoin de changer son type ? « $a = $obj->bidule; » ne convient pas ?
Euh... en fait, par précaution, je type toujours et là, c'était en entier. Peut-être que sans rien ça fonctionne aussi, mais quand même pas pour isset et is_null.
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné une valeur de type string (transtypage en string de $obj->bidule), la variable existe (d'où isset répond TRUE et !isset répond FALSE), et elle est de type string et non de type null (d'où is_null répond FALSE).
En fait : " Une variable est considérée comme null si : elle s'est vu assigner la constante NULL. elle n'a pas encore reçu de valeur. elle a été effacée avec la fonction unset(). ".
Donc normal que is_null ne renvoie par true. Pour isset, d'accord avec toi.
Olivier Miakinen a écrit :
Bonjour,
Le 07/07/2009 15:26, Olivier Masson a écrit :
Pour une inclusion dans une base SQL, j'avais besoin de distinguer la
valeur 0 (zéro) d'une variable et la valeur NULL.
La variable à tester est issue d'un objet.
Je la type en string car en int il me convertit NULL en 0.
$a = (string)$obj->bidule;
Euh... et pourquoi as-tu besoin de changer son type ?
« $a = $obj->bidule; » ne convient pas ?
Euh... en fait, par précaution, je type toujours et là, c'était en
entier. Peut-être que sans rien ça fonctionne aussi, mais quand même pas
pour isset et is_null.
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné
une valeur de type string (transtypage en string de $obj->bidule), la
variable existe (d'où isset répond TRUE et !isset répond FALSE), et
elle est de type string et non de type null (d'où is_null répond FALSE).
En fait : " Une variable est considérée comme null si :
elle s'est vu assigner la constante NULL.
elle n'a pas encore reçu de valeur.
elle a été effacée avec la fonction unset().
".
Donc normal que is_null ne renvoie par true.
Pour isset, d'accord avec toi.
Pour une inclusion dans une base SQL, j'avais besoin de distinguer la valeur 0 (zéro) d'une variable et la valeur NULL.
La variable à tester est issue d'un objet. Je la type en string car en int il me convertit NULL en 0. $a = (string)$obj->bidule;
Euh... et pourquoi as-tu besoin de changer son type ? « $a = $obj->bidule; » ne convient pas ?
Euh... en fait, par précaution, je type toujours et là, c'était en entier. Peut-être que sans rien ça fonctionne aussi, mais quand même pas pour isset et is_null.
Oui, c'est tout à fait normal. À partir du moment où tu lui as donné une valeur de type string (transtypage en string de $obj->bidule), la variable existe (d'où isset répond TRUE et !isset répond FALSE), et elle est de type string et non de type null (d'où is_null répond FALSE).
En fait : " Une variable est considérée comme null si : elle s'est vu assigner la constante NULL. elle n'a pas encore reçu de valeur. elle a été effacée avec la fonction unset(). ".
Donc normal que is_null ne renvoie par true. Pour isset, d'accord avec toi.