ajout element array

Invité
Invité n'ayant pas de compte PHPfrance

29 juil. 2007, 12:26

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)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 juil. 2007, 12:36

Salut,

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

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

29 juil. 2007, 12:58

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?

Invité
Invité n'ayant pas de compte PHPfrance

29 juil. 2007, 13:07

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?

ViPHP
ViPHP | 5924 Messages

29 juil. 2007, 13:13

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...

Invité
Invité n'ayant pas de compte PHPfrance

29 juil. 2007, 13:22

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 juil. 2007, 13:32

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()

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

29 juil. 2007, 13:53

@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.

ViPHP
ViPHP | 5924 Messages

29 juil. 2007, 14:12

Et de lire les "Voir aussi"

Invité
Invité n'ayant pas de compte PHPfrance

29 juil. 2007, 14:20

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?

Mammouth du PHP | 693 Messages

29 juil. 2007, 14:35

Avant de faire ca, vérifie que $tab[] est un tableau. Si ca se trouve, c'est juste une erreur de ce type.

Eléphant du PHP | 185 Messages

29 juil. 2007, 14:43

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.

Mammouth du PHP | 693 Messages

29 juil. 2007, 14:47

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.

Eléphant du PHP | 185 Messages

29 juil. 2007, 15:04

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 ?

Invité
Invité n'ayant pas de compte PHPfrance

29 juil. 2007, 15:13

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