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
Bonjour,

Cela doit être simple mais je patauge depuis 2 jours.
J'ai un code qui marche (désactivé ici par des //) mais je veux me libérer des zéros intempestifs.
J'ai essayé 2 codes php pour mes 2 champs (tous les 2 labélisés INT, pas VARCHAR) avec des zéros parasites, mais j'ai un message d'erreur:

Parse error: syntax error, unexpected '[', expecting ',' or ';' in D:\_blablal\blabla.php on line 109
Y a pas de souci de [ à la ligne 109 qui est celle avec if (substr($Original_array[3],0,0) !==0 (j'ai essayé d'intervertir le code des lignes 109 et 110, mais c'est pareil)

echo '<tr><td><i>' . $genetics .
                            '</i></td><td><i>'. $Original_array[0] .
                            '</i></td><td><i>'. $Original_array[1] .
			//'</i></td><td>'. $Original_array[2] . 
			//'</i></td><td>'. $Original_array[3] . 
			//'</i></td><td>'. $Original_array[4] . 
			//'</td><td>' . $Original_array[5] . '</td></tr>';
			'</i></td><td>'. $Original_array[2] . '';
			if (substr($Original_array[3],0,0) !==0) {echo '</td><td>' . Original_array[3] . '';} else {echo '</td><td>';}
			if ($Original_array[4] !==0) {echo '</td><td>' . Original_array[4] . '';} else {echo '</td><td>';}
			echo '</td><td>' . $Original_array[5] . '</td></tr>';



Un petit coup de pouce?

Merci d'avance

Seb




A voir également:

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
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" :
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
0
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
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)
0
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
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.
0