Une erreur PHP simple (?), je coince sur un !==0
Résolu/Fermé
Sebas22
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
-
17 févr. 2017 à 12:50
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 17 févr. 2017 à 17:35
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 17 févr. 2017 à 17:35
A voir également:
- Une erreur PHP simple (?), je coince sur un !==0
- Erreur 0x80070643 - Guide
- Iphone 14 simple - Guide
- Erreur 38 free ✓ - Forum Mobile
- Erreur 0 free - Forum Mobile
- Iptv erreur de lecture - Forum TV & Vidéo
2 réponses
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié par Reivax962 le 17/02/2017 à 14:56
Modifié par Reivax962 le 17/02/2017 à 14:56
Bonjour,
Deux choses.
D'une part, substr() renvoie une chaîne. Donc la comparaison avec !== sera toujours vraie, puisque string("0") est toujours !== de int(0).
Compare plutôt avec "0" :
D'autre part, il manque les $ devant Original_array[3] à la ligne qui te pose problème, dans le corps du if (et à la ligne suivante aussi)
Xavier
Deux choses.
D'une part, substr() renvoie une chaîne. Donc la comparaison avec !== sera toujours vraie, puisque string("0") est toujours !== de int(0).
Compare plutôt avec "0" :
if (substr($Original_array[3],0,0) !== "0").
D'autre part, il manque les $ devant Original_array[3] à la ligne qui te pose problème, dans le corps du if (et à la ligne suivante aussi)
Xavier
Sebas22
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
5
17 févr. 2017 à 17:03
17 févr. 2017 à 17:03
Merci Xavier,
Je me disais que j'avais besoin d'un œil extérieur.
Je n'avais pas intégré cette notion d'incompatibilité entre les strings et les INT.
C'est bon maintenant.
Je marque 'résolu'
Seb
(pour le $ c'était de l'inattention en recopiant)
Je me disais que j'avais besoin d'un œil extérieur.
Je n'avais pas intégré cette notion d'incompatibilité entre les strings et les INT.
C'est bon maintenant.
Je marque 'résolu'
Seb
(pour le $ c'était de l'inattention en recopiant)
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
17 févr. 2017 à 17:35
17 févr. 2017 à 17:35
En fait, ce n'est pas que c'est complètement incompatible.
Il y a des équivalences, mais les opérateurs !== et === servent justement à indiquer qu'on veut une égalité en valeur ET AUSSI en type.
Si tu avais utilisé != et ==, tu n'aurais pas eu le même problème (mais tu aurais pu en avoir d'autre), car ils ne font les comparaisons qu'en valeur.
Par exemple, les lignes suivantes sont toutes VRAIES :
1 == "1"
"1" == true
0 == false
"" == false
"0" == false
0 == ""
etc.
Par contre, en rajoutant un symbole = elles deviennent toutes fausses.
Il y a des équivalences, mais les opérateurs !== et === servent justement à indiquer qu'on veut une égalité en valeur ET AUSSI en type.
Si tu avais utilisé != et ==, tu n'aurais pas eu le même problème (mais tu aurais pu en avoir d'autre), car ils ne font les comparaisons qu'en valeur.
Par exemple, les lignes suivantes sont toutes VRAIES :
1 == "1"
"1" == true
0 == false
"" == false
"0" == false
0 == ""
etc.
Par contre, en rajoutant un symbole = elles deviennent toutes fausses.