Effacer une ligne d'un tableau a plusieur dimension

Résolu
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007 - 16 juin 2005 à 17:49
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007 - 17 juin 2005 à 14:35
Bonjour,

voila j'ais un ti problem, j'ais un tableau a plusieur dimension par exemple :

[ 1, name1, type1, size1 ]
[ 2, name2, type2, size2 ]
...
[ k, namek, typek, sizek ]

Je souhaite maintenant effacer la ligne 2, je fais donc :

unset($nametable[2]);
array_values($nametable);

mon problem est le suivant, j'obtien le tableau suivant :

[ 1, name1, type1, size1 ]
[ 3, name3, type3, size3 ]
...
[ k, namek, typek, sizek ]

j'arrive pas a re-indexer mon tableau !!
du coup ben je peux peu plus utiliser mon tableau avec un "for" par exemple car la key 2 est manquante....

Que faire, une solution ? suis-je claire ?

merci d'avance

5 réponses

barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
17 juin 2005 à 14:35
Ben en fait le bout de code :



unset($table);

array_values($table);



Marche pour un tableau a une dimension, l'erreur vient de la fonction
array_values() qui ne fait pas sont travail avec les tableaux a
plusieur dimension...

Peut etre un oubli....

Enfin sinon j'ais trouvé une autre solution, utiliser key_values($table); qui retourne les clées d'un tableau,

et donc il est possible de louper sur le tableau principale de cette maniere :



$key = key_values($table);

for( $i=0; $i<count($key); $i++)

{

echo $table[$key[$i]];

}



et voila le travail :)



En fait je travail avec des while mais la ct juste pour l'exemple.

Mon but été de faire cela en gros de louper plusieur foi sur le meme
tableau, quand une entrée du tableau est considéré comme valide je
l'utilise et je l'effece de mon tableau principale, et je continu la
boucle principal, donc par exemple :



$table est mon tableau



afficher toutes les entrées e1 du tableaux qui satisfont cette
condition : cond1;
// nb d'entrée = n

effacer ces entrées



afficher toutes les entrées du tableaux qui satisfont cette condition :
cond2; // nb
d'entrée = n - e1


effacer ces entrées



afficher toutes les entrées du tableaux qui satisfont cette condition :
cond3; // nb
d'entrée = n - e1 - e2


effacer ces entrées



etc...



donc a chaque étape la recherche est accéléré...



voila, bon je crois que je vais pouvroi résoudre mon problem avec key_values ;)



Merci quand meme !

A plus...



( Je poste bientot mon code : browser de fichier avec pas mal d'option )
3
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
16 juin 2005 à 17:51
a ben je c pas se qui c passé ... tout est sur la meme ligne, bon je re-éssai :

Bonjour,

voila j'ais un ti problem, j'ais un tableau a plusieur dimension par exemple :

[ 1, name1, type1, size1 ]
[ 2, name2, type2, size2 ]
...
[ k, namek, typek, sizek ]

Je souhaite maintenant effacer la ligne 2, je fais donc :

unset($nametable[2]);
array_values($nametable);

mon problem est le suivant, j'obtien le tableau suivant :

[ 1, name1, type1, size1 ]
[ 3, name3, type3, size3 ]
...
[ k, namek, typek, sizek ]

j'arrive pas a re-indexer mon tableau !!
du coup ben je peux peu plus utiliser mon tableau avec un "for" par exemple car la key 2 est manquante....

Que faire, une solution ? suis-je claire ?

merci d'avance
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 juin 2005 à 18:35
Salut,



je comprends rien à ton prob, mais pour le problème des lignes soumets
ton problème aux admins codes sources en leur précisant quel navigateur
tu utilises.



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
16 juin 2005 à 19:12
J'utilise le dernier Opera... bon je previens les admins et je leur
demande aussi de suprimer les deux postes inutiles si dessu :s

Bonjour,voila j'ais un ti problem, j'ais un tableau a plusieur dimension appelé $nametable par exemple :



[ 1, name1, type1, size1 ]

[ 2, name2, type2, size2 ]

...

[ k, namek, typek, sizek ]



Je souhaite maintenant effacer la ligne 2em, je fais donc :



unset($nametable[2]); // delete line 2

array_values($nametable); // should re-index the key in the table !!



mon problem est le suivant, j'obtien le tableau :



[ 1, name1, type1, size1 ]

[ 3, name3, type3, size3 ]

...

[ k, namek, typek, sizek ]



j'arrive pas a re-indexer mon tableau !!du coup ben je peux peu plus utiliser mon tableau avec

un "for" par exemple car la key n°2 est manquante....

Que faire, une solution ? suis-je claire ?



merci d'avance



(je m'excuse pour les deux postes précedent !!!!!!!!!!!!!!!!!!!!! )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
daffy17 Messages postés 106 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 22 avril 2010
17 juin 2005 à 08:23
pour lire un tableau n'utilise pas le fonction for qui t'oblique a connaaitre la profondeur de celui ci utilise plutot la fonction while



while ($maligne = $nametable)

{

action...

}



en php le while va lire automatiquement la ligne et passé à la suivante
lorsque l'action sur celle-ci est terminé. Il va s'arreté lorsqu'il n'y
a plus de ligne.

Si tu as un tableau a plusieurs dimensions il te suffit de concatener tes while comme avec un for



while ($maligne = $nametable)


{


while ($maligne = $nametable)

{


action...

}


}

etc..etcc...



J'espere que sa pourra t'aider
0
Rejoignez-nous