Une erreur PHP simple (?), je coince sur un !==0
Résolu
Sebas22
Messages postés
110
Date d'inscription
Statut
Membre
Dernière intervention
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Une erreur PHP simple (?), je coince sur un !==0
- Iphone 14 simple - Guide
- Remettre a 0 un pc - Guide
- Erreur 0x80070643 - Accueil - Windows
- Corriger l'erreur 0x80070643 de la mise à jour KB5034441 de Windows 10 - Accueil - Windows
- Acpi\int33a0\0 ✓ - Forum Pilotes (drivers)
2 réponses
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
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)
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.