Fonctionnement de array_push() ??

Résolu
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007 - 18 juil. 2007 à 00:40
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007 - 18 juil. 2007 à 11:05
Bonsoir à tous, je me retrouve face à un problème qui me perturbe un peu. J'ai un tableau de tableaux auquel je veux ajouter des éléments, voici mon code :
                       
                        $chaine=array(array());
                        $chaine['a']=array('o');
                        $chaine['a']= array_push($chaine['a'], 'o')
                        $chaine['a']= array_push($chaine['a'], 'o');

Or, j'obtiens l'erreur : Warning: array_push() [function.array-push]: First argument should be an array.

Pourtant, le premier argument ($chaine['a']) est bien un tableau puisque $chaine est un tableau de tableau... Où est-ce que j'ai faux dans mon résonnement ?

Merci à tous.

Vince

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 juil. 2007 à 09:48
Hello,

ton raisonnement est juste? C'est ton utilisation de la fonction qui ne l'est pas : array_push ne renvoie PAS le tableau, il le modifie (le tableau est passé par référence à la fonction). array_push ()à renvoie un booléen, true ou false selon s'il réussit ou échoue.
Donc quand tu fais :
$chaine['a']= array_push($chaine['a'], 'o');
$chaine['a'] vaut true
et l'appel suivant échoue puisque $chaine['a'] n'est plus un tableau.
<?php
$chaine['a']=array('o');
array_push($chaine['a'], 'o');
array_push($chaine['a'], 'o');
?>
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
18 juil. 2007 à 09:49
Hello,

on ne dit pas

                        $chaine=array(array());
                        $chaine['a']=array('o');
                        $chaine['a']= array_push($chaine['a'], 'o')
                        $chaine['a']= array_push($chaine['a'], 'o');

mais

                        $chaine=array(array());
                        $chaine['a']=array('o');
                        array_push($chaine['a'], 'tata')
                        array_push($chaine['a'], 'toto');

à+
3
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
18 juil. 2007 à 11:05
Ah ok !! Merci infiniment, c'est ce genre de ptit problème qui fait perdre beaucoup de temps pour pas grand chose ;) Merci encore !

Vince
0