Page 1 sur 2

ajout element array

Posté : 29 juil. 2007, 12:26
par Invité
Bonjour à tous,
j'ai un tableau comme suit:
$tab = array("b", "d", "c");
Comment faire pour ajouter "toto" à mon tableau, de manière à ce que le résultat soit toujours:
$tab = array("toto", "b", "d", "c");
(toto toujours en premier, quelle que soit la composition du tableau)

Posté : 29 juil. 2007, 12:36
par Truc
Salut,

Rien de mieux que la doc :)
Dans la liste des fonctions (array) disponible tu y trouveras ton bonheur :wink:

Posté : 29 juil. 2007, 12:58
par Invité
justement j'ai consulté les fonctions de la doc mais je n'ai pas trouvé ce qui m'intéressait.
La fonction que je cherche y est surement, mais je n'ai pas assez d'expérience pour la détecter. Pourrais tu m'orienter avec un nom de fonction?

Posté : 29 juil. 2007, 13:07
par Invité
le plus proche de ce que je cherche semble être array_push, qui ajoute un élément à la fin du tableau.
Est-ce possible d'utiliser array_push pour ajouter mon élément en début de tableau?

Posté : 29 juil. 2007, 13:13
par Sékiltoyai
Dans la doc de array_push(), ils te proposent de voir aussi 3 autres fonctions. Il y en a une qui fait ce que tu veux...

Posté : 29 juil. 2007, 13:22
par Invité
j'ai trouvé array_pad qui est parfait
$tab = array("b", "d", "c");
$tab = array_pad($tab, -4 , "zzz"); 
var_dump($tab) me renvoie
array(4) 
{ 
[0]=> string(3) "zzz" 
[1]=> string(1) "a" 
[2]=> string(1) "b" 
[3]=> string(1) "c" 
} 
Merci! :D

Posté : 29 juil. 2007, 13:32
par Truc
oui ça marche pour ce cas, essaie d'ajouter "aaa" maintenant en ne remplaçant juste "zzz" :wink:

L'autre fonction est plus array_unshift()

Posté : 29 juil. 2007, 13:53
par Hubert Roksor
@Truc : pour info, il y a déjà un lien vers le manuel qui s'affiche quand on poste un sujet.

@invité : c'est dommage que tu te sois arrêté à "array_p..." parce qu'en descendant un peu il y a avait la fonction adaptée, mentionnée plus haut. N'hésite pas à lire le manuel plusieurs fois avant d'abandonner, c'est ce que tout le monde fait.

Posté : 29 juil. 2007, 14:12
par Sékiltoyai
Et de lire les "Voir aussi"

Posté : 29 juil. 2007, 14:20
par Invité
petite question annexe sur array unshift() :

J'ai un tableau $tab, dont chaque valeur est un tableau ($tab contient des tableux).
Je voudrais ajouter la valeur "toto" à chaque sous tableau de $tab.
Je fais:
for ($i=0; $i <count($tab); $i++)
{
	array_unshift ($tab[$i] , "Toto");
}
Et je reçois l'erreur :
Warning: array_unshift() [function.array-unshift]: The first argument should be an array 
On dirait que $tab[$i] ne me permet pas de pointer sur un sous tableau de $tab.
Voyez vous ce qui ne va pas?

Posté : 29 juil. 2007, 14:35
par orgerix
Avant de faire ca, vérifie que $tab[] est un tableau. Si ca se trouve, c'est juste une erreur de ce type.

Posté : 29 juil. 2007, 14:43
par Kaoteknik
Est-ce qu'en "forçant" l'indexation des éléments du tableau cela pourrait résoudre le problème ?

J'entend par là écrire ceci :
$tab = array(1=>'b', 2=>'d', 3=>'c');
De cette façon la clé 0 sera libre pour accueillir le nouvel élément "toto" :
$tab[0]='toto';
Par la suite il suffirait d'utiliser la fonction "ksort" pour trier le tableau par ordre croissant des clés :
ksort($tab);
Voilà, je ne sais pas si c'est l'effet recherché, mais ça me semble être une solution plutôt simple.

Posté : 29 juil. 2007, 14:47
par orgerix
Ah, mais je croyais qu'il s'agissait de tableau multidimensionnelles.

Dans ton cas, il suffit de faire :

    array_unshift ($tab , "Toto"); 
et c'est bon.

Posté : 29 juil. 2007, 15:04
par Kaoteknik
Comme l'a précisé "Invité" il s'agit bien de tableaux multidimensionnels puisque les éléments "b", "d", et "c" sont eux-mêmes des tableaux...

Par contre je suis un peu perdu. S'agit -il d'ajouter l'élément "toto" au tableau $tab ET aux sous-tableaux qu'il contient, ou juste d'ajouter cet élément aux sous-tableaux ?

Posté : 29 juil. 2007, 15:13
par Invité
Dans ma première question, $tab ne contient que des éléments simples.
dans ma dernière question ci dessus qui est une situation un peu différente, $tab contient des sous tableaux.
il s'agit donc d'ajouter l'élément 'toto" à chaque sous-tableau