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

Petit nouveau ! | 1 Messages

05 janv. 2007, 13:47

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

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 14:12

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()]
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

05 janv. 2007, 15:49

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 ?

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 16:02

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
}
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

05 janv. 2007, 18:22

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>';

jerk
Invité n'ayant pas de compte PHPfrance

17 févr. 2007, 01:36

merci a vous ca marche !!! :D

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

17 févr. 2007, 01:44

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.