Effacer une ligne d'un tableau a plusieur dimension

Résolu
Signaler
Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007
-
Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007
-
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

Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007

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 )
Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007

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
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007

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 !!!!!!!!!!!!!!!!!!!!! )
Messages postés
106
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
22 avril 2010

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