ajout element array

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ajout element array

par Kaoteknik » 29 juil. 2007, 15:44

Je ne suis pas sûr de ce que j'avance mais s'il s'agit d'un tableau bidimensionnel il devra être déclaré comme suit :
$tab = array	(	array( 'index'=>'b', 'article'=>'cuillère', 'prix'=>2),
					array( 'index'=>'d', 'article'=>'fourchette', 'prix'=>4),
					array( 'index'=>'c', 'article'=>'couteau', 'prix'=>3)
				);
Pour ajouter ensuite un élément identique à chaque sous-tableau (par exemple "matière=inox") j'écrirais ceci :
for ($i=0 ; $i<3 ; $i++) {
$tab[$i]['mati&egrave;']='inox';
}

par Truc » 29 juil. 2007, 15:20

@Truc : pour info, il y a déjà un lien vers le manuel qui s'affiche quand on poste un sujet.
En effet...

Le message te dit que $tab[$i] n'est pas un tableau !
montre nous la stucture de $tab avec :
<pre>
<? print_r($tab); ?>
</pre>

par Invité » 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

par Kaoteknik » 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 ?

par orgerix » 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.

par Kaoteknik » 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.

par orgerix » 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.

par Invité » 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?

par Sékiltoyai » 29 juil. 2007, 14:12

Et de lire les "Voir aussi"

par Hubert Roksor » 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.

par Truc » 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()

par Invité » 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

par Sékiltoyai » 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...

par Invité » 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?

par Invité » 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?