Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1421 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Supprimer une valeur d'un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Supprimer une valeur d'un tableau

n°1234825
rdams
Posté le 31-10-2005 à 11:00:41  profilanswer
 

Bonjour,
 
je voudrais savoir comment faire pour supprimer une valeur d'un tableau.
je parcours mon tableau et je fais des tests pour trouver la valeur à supprimer
une fois la valeur trouvé, je ne voit pas comment faire pour la supprimer.
 

Code :
  1. foreach ($list_typologies as $liste => $val_liste ){
  2.   //test si typo de demande = typo existante
  3.   if($typo_dem==$liste){
  4.     //parcours des retentions
  5.     foreach ($val_liste as $liste_ret){
  6.       //test si ret de demande = ret existante pour la typo si oui on la supprime dans typo
  7.       if($ret_dem==$liste_ret){
  8.          //supprimer $liste_ret  
  9.       }
  10.     }
  11.   }
  12. }


 
 
merci pour votre aide.
 

mood
Publicité
Posté le 31-10-2005 à 11:00:41  profilanswer
 

n°1234849
sielfried
Posté le 31-10-2005 à 11:39:04  profilanswer
 
n°1234981
rdams
Posté le 31-10-2005 à 14:11:49  profilanswer
 

je ne vois pas comment faire le unset j'ai essayé :
unset ($typo_dem[$liste_ret])
 
 
mais ça ne fonctionne pas.

n°1235043
sielfried
Posté le 31-10-2005 à 14:55:53  profilanswer
 

$liste_ret c'est une valeur de tableau là, pas un indice.
 
http://www.php.net/foreach


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1235049
sielfried
Posté le 31-10-2005 à 15:08:26  profilanswer
 

En même temps j'ai pas compris grand chose à la boucle. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1235053
rdams
Posté le 31-10-2005 à 15:14:31  profilanswer
 

c'est un prog que je reprend et je doit faire des modifs dessus.
en fait le tableau permet d'afficher 2 liste deroulante
 
le but est si il y a deja une ret demandée dans une typo demandé, on ne doit plus l'avoir dans la liste déroulante.
donc j'essaie de l'enlever du tableau pour eviter de ressaisir une 2eme fois la meme demande mais c'est la galere.
 
 
je pense que je vais laisser tomber cette méthode et faire un test une fois la demande valider et afficher une popup indiquant qu'il y a 2 fois la demande pour une meme ret et typo. et demander d'ecraser ou non

n°1247455
dcvlm
Yep
Posté le 17-11-2005 à 11:40:48  profilanswer
 

je prends le meme topic (preuve que j'ai fait une recherche, hein !!!) parce que c un grave probleme !!!!!!!!
 
Je trouve ca dingue qu'il existe pas un truc genre array_delete_values() or array_delete_keys() qui supprimerait une entree d un tableau en lui donnait soit la valeur recherche soit la cle correspondante !!!!!!   :o  :o  :o  :o  :o  :o  
 
..... Ou alors je suis aveugle et j'ai pas vu ca sur php.net  :??:  
 
Je peux l'ecrire, mais bon.... chu pas la pour ca a la base... ca devrait exister....
 
Donc si vous l'avez deja ecrite, ou si vous avez une aide a me fournir  :jap:


---------------
ZZZZzzzzz
n°1247465
dcvlm
Yep
Posté le 17-11-2005 à 11:50:24  profilanswer
 

Ouais bon en fait, c etait pas trop long a coder  :D  
 

Code :
  1. function array_delete_value($array,$search) {
  2. $temp = array();
  3. foreach($array as $key => $value) {
  4.  if($value!=$search) $temp[$key] = $value;
  5. }
  6. return $temp;
  7. }
  8. function array_delete_key($array,$search) {
  9. $temp = array();
  10. foreach($array as $key => $value) {
  11.  if($key!=$search) $temp[$key] = $value;
  12. }
  13. return $temp;
  14. }
  15. $a = array("coco" => "salut", "bonjour" => "victor", "bye" => "you" );
  16. print_r($a);
  17. $a = array_delete_value($a,"victor" );
  18. print_r($a);
  19. $a = array_delete_key($a,"bye" );
  20. print_r($a);


 
Outputs :  

Code :
  1. Array
  2. (
  3.     [coco] => salut
  4.     [bonjour] => victor
  5.     [bye] => you
  6. )
  7. Array
  8. (
  9.     [coco] => salut
  10.     [bye] => you
  11. )
  12. Array
  13. (
  14.     [coco] => salut
  15. )


 
Mais bon, je demors pas que ca devrait exister ds PHP !


---------------
ZZZZzzzzz
n°1247604
art_dupond
je suis neuneu... oui oui !!
Posté le 17-11-2005 à 14:33:43  profilanswer
 

Code :
  1. <?
  2. $a = array(3,5,435,45);
  3. print_r ($a);
  4. echo '<br />';
  5. $a[3] = NULL;
  6. print_r ($a);
  7. echo '<br />';
  8. unset($a[0]);
  9. print_r ($a);
  10. echo '<br />';
  11. ?>


 

Citation :


Array ( [0] => 3 [1] => 5 [2] => 435 [3] => 45 )
Array ( [0] => 3 [1] => 5 [2] => 435 [3] => )
Array ( [1] => 5 [2] => 435 [3] => )


 
 
 
edit: mmm j'ai peut etre répondu à coté en fait [:gratgrat]


Message édité par art_dupond le 17-11-2005 à 14:37:59

---------------
oui oui
n°1247615
art_dupond
je suis neuneu... oui oui !!
Posté le 17-11-2005 à 14:43:15  profilanswer
 

hmmm ca devrait répondre à la question
 

Code :
  1. <?
  2. $a = array(3,5,"tu vas te taire oui ???",45, "non mais ho" );
  3. unset($a[array_search("tu vas te taire oui ???", $a)]);
  4. print_r ($a);
  5. ?>


 

Citation :

Array ( [0] => 3 [1] => 5 [3] => 45 [4] => non mais ho )


---------------
oui oui
mood
Publicité
Posté le 17-11-2005 à 14:43:15  profilanswer
 

n°1247646
omega2
Posté le 17-11-2005 à 15:04:37  profilanswer
 

t'aurais pas plus bourin comme méthode pour effacer un élément d'un tableau?
Pour détruire une variable ou un indice d'un tableau :
http://www.nexen.net/docs/php/anno [...] .unset.php
 
Là, tu consomes pour rien plein de ressources mémoires (doublement de tableau) et de temp processeur (copie de l'intégralité du contenu du tableau) Pour une chôse qui en demande normalement trés peu. Et si tu veux te faire une fonction maison alors utilises plustôt "!==" à la place du simple "!=" ou bien rajoute un test avec "is_array()" par ce que là, si je fais un tableau à plusieurs dimensions et que je te demandes de me suprimer la chaine "array", tu me supprime tout. Idem pour un tableau contenant des objets si je cherche "object".
 
Bref : array_delete_key ne sert à rien (unset fait aussi bien en beaucoup mieux) et ton array_delete_value est loin d'être complet car ne gérant même pas la possibilité d'avoir un tableau dans une case du tableau et tel que tu l'as écrit, c'est remplacable tel qu'indiqué par art_dupond quite à mettre une petite boucle autour pour être sur d'avoir éfaccé toutes les occurences d'une valeur.
 
PS : Juste pour info, s'il n'existe pas de fonction "array_delete_value" c'est surement par ce que pour tout gérer et proposer toutes les options possiblement nécessaire, la fonction serait tellement complexe qu'elle en deveindrait lente et qu'il serait préférable assez souvent de se faire sa propre fonction en fonction de ce qu'on a vraiment besoin.
Voici ce qu'une telle fonction devrai gérer pour être utilisable dans tous les cas:
- recherche multi niveau d'un tableau multidimensionnel avec possibilité de recherche non récursive
- si recherche multi niveau possibilité de dire comment la supression doit être faire (juste l'indice du niveau x qui contient ce qu'est recherché ou l'indice principal du tableau qui contient l'élément contenant la recherche)
- possibilité de recherche en cherchant dans les objets
- possibilité de dire si on tient compte du type de donnée (object, array, texte, nombre, ressource ...) ou si on suprime quelque soit le type (avec le risque qui existe dans ta fonction)
- possibilité de dire si on tient compte de la casse ou pas.
- possibilité de chercher un tableau ou un objet précis
 
Comme tu vois, faire une telle fonction de maniére générique serait bien trop complexe alors qu'on a pas besoin d'une telle complexité dans 98% des cas. il vaut mieux s'en faire une qui correspond vraiment à ce qu'on a besoin. :)

Message cité 2 fois
Message édité par omega2 le 17-11-2005 à 15:08:39
n°1247724
dcvlm
Yep
Posté le 17-11-2005 à 16:25:42  profilanswer
 

omega2 a écrit :


Comme tu vois, faire une telle fonction de maniére générique serait bien trop complexe alors qu'on a pas besoin d'une telle complexité dans 98% des cas. il vaut mieux s'en faire une qui correspond vraiment à ce qu'on a besoin. :)


 
Je suis bien d'accord... Donc.... dans ce cas.....
Ils n'avaient qu'a faire la fonction qui sert dans 98% des cas  :o  (qui, en plus, n'est pas complexe du tt selon ton raisonnment) !!!!!!!!!  :jap:  
Et pr les 2% restants, on se fait sa fonction ! :)
 
Edit :
Et comme tu le dis aussi, on ecrit sa fonction qui correspond a ses besoins....la fonction que j'ai ecrit correspond a mon besoin !! ... c pas une bombe , je sais .... je ne l'ai pas soumise a Mr PHP  ;)  
D'ailleurs, je me plie devant l'efficacite du unset... je ne pensais pas que ca marchait pr un morceau de tableau !!!!  
 
 :hello:


Message édité par dcvlm le 17-11-2005 à 16:29:27

---------------
ZZZZzzzzz
n°1247842
art_dupond
je suis neuneu... oui oui !!
Posté le 17-11-2005 à 17:48:04  profilanswer
 

ma "array_delete_value" est déjà mieux que la tienne :o

Message cité 1 fois
Message édité par art_dupond le 17-11-2005 à 17:48:24

---------------
oui oui
n°1247880
dcvlm
Yep
Posté le 17-11-2005 à 18:15:02  profilanswer
 

art_dupond a écrit :

ma "array_delete_value" est déjà mieux que la tienne :o


 
Oui, mais la mienne est plus grosse que la tienne !  :lol:  :lol:  :lol:


---------------
ZZZZzzzzz
n°1247883
art_dupond
je suis neuneu... oui oui !!
Posté le 17-11-2005 à 18:17:04  profilanswer
 

arf je ne m'attendais pas du tout à celle la :p
 

Spoiler :

je voulais juste m'assurer qu'on avait bien vu ma réponse :o


---------------
oui oui
n°2005868
TheCake_
Posté le 29-06-2010 à 21:15:55  profilanswer
 

omega2 a écrit :

Pour détruire une variable ou un indice d'un tableau :
http://www.nexen.net/docs/php/anno [...] .unset.php


 
Le lien n'est plus bon.
Allez plutôt ici:  http://www.lephpfacile.com/manuel- [...] .unset.php.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Supprimer une valeur d'un tableau

 

Sujets relatifs
[débutant] Image dans un tableau...[PHP / HTML] Bloqué dans mon tableau
[ms sql server] proc pr supprimer une table dont le nom est en paramMéthode de remplissage de tableau
[PHP] Comment actualiser une frame en fonction d'une autreActiver le XML-RPC en PHP
[VB6] OLE:supprimer le contenu[ PHP ][ Resolu ] Upload et verification d'un fichier binaire
Valeur aléatoire comprise entre 2 nombres?.. 
Plus de sujets relatifs à : [PHP] Supprimer une valeur d'un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR