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   -
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention   5
 
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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