Page 1 sur 1

Fatal error: Cannot use string offset as an array in ... = ?

Posté : 05 janv. 2007, 13:47
par jerkeve
Bonjour,

mon code fonctionne nickel sous PHP4 et bloque sur l'affichage d'une bete variable tableau des que je passe a PHP5...
Quelqu'un peut me dire ce qu'il faut faire pour afficher ma variable ?

Concretement je cherche simplement a afficher la variable $tablaffich qui se presente ainsi :
//.........
	for($j=0; $j<count($tablaffich); $j++)
	{
		echo '  
		<tr align="center">
		<td>',$tablaffich[$j][0],'</td>
		<td> ',$tablaffich[$j][1],' </td>
		<td> ',$tablaffich[$j][2],' </td>
		<td> ',$tablaffich[$j][3],' </td>	
		</tr>
		';
	}
//............
Elle est renseignée, elle existe, et meme si je veux simplement l'afficher ainsi : $tablaffich[0][0] , elle m'affiche le message d'arreur du titre de ce post.


Que faire pour afficher cette variable ? MERCI DE VOTRE AIDE
:D

Posté : 05 janv. 2007, 14:12
par Ajoloca
Bonjour,

Quand tu as de PB, la première chose c'est de voir le contenu de la variable qui pose problème.

Avant ton affichage (formaté) regarde comment est structuré ton tableau et ce qu'il contient.
echo '<pre>' . print_r($tablaffich) . '</pre>'
et montre le résultat.

[Edit (HR): ou même var_dump()]

Posté : 05 janv. 2007, 15:49
par Invité
bonjour,

merci de ta réponse.
en fait cela donne par exemple (je ne sais pas ce que c'est que ce "1" sous la dernière accolade, mais il apparait toujours, même si le tableau est vide => ??) :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => A_ALAMA1 [1] => Chèque N° 1303308 [2] => 3000.00 [3] => ) [1] => Array ( [0] => A_CHISA2 [1] => Chèque N° 1303309 [2] => 120.00 [3] => ) [2] => Array ( [0] => A_NAVBS12 [1] => Chèque N° 1303329 [2] => 285.00 [3] => ) [3] => Array ( [0] => A_BRECA13 A_BREDI14 [1] => Chèque N° 1303330 [2] => 110.00 [3] => ) [4] => Array ( [0] => D_PIASA18 [1] => Chèque [2] => [3] => 250.00 ) ) 1
En pratique le message d'erreur n'apparait que si le tableau est vide (mais n'apparait pas avec PHP4...).
J'ai donc résolu le pb en n'affichant le tableau que si count($tablaffich) > 1....
pas tres élégant... mais efficace. Il y a mieux ?

Posté : 05 janv. 2007, 16:02
par Ajoloca
Re,
Tu as en PHP quelque chose de plus élégant "empty()", à ne pas confondre avec "isset()"
isset() retourne vrai si la variable est déclarée, même si elle est vide.
empty() retourne vrai si la variable est déclarée mais est vide contient 0 (si numérique) ou "" si chaîne.

Ce qui dans ton cas nous donnerait
if (! empty($tablaffich)) {
   // Tu fais ton traitement
}

Posté : 05 janv. 2007, 18:22
par Hubert Roksor
Je n'ai pas trop suivi la discussion, mais une chose est sûre, oublie for et utilise foreach à la place.

Pour le "1" en fait c'est le résultat de la fonction print_r() et un petit bug dans le code d'Ajoloca. Il devrait ressembler à
echo'<pre>';print_r($foo);echo'</pre>';
// ou
echo'<pre>';var_dump($foo);echo'</pre>';

Posté : 17 févr. 2007, 01:36
par jerk
merci a vous ca marche !!! :D

Posté : 17 févr. 2007, 01:44
par albat
Modération :
jerkeve, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.