Effacer un tableau d'un tableau ! ,)

Effacer un tableau d'un tableau ! ,) - PHP - Programmation

Marsh Posté le 22-02-2006 à 19:51:44    

Salut tlm,
 
j'ai un petit problème concernant la suppression d'un tableau ds un autre tableau
 
voici le code d'insertion deja :
 

Code :
  1. for($i=0;$i<count($objAbon->formules);$i++){ //on insère dans la session les formules deja existantes
  2.   $tab['PERIODE']=$objAbon->formules[$i]->periode;
  3.   $tab['TYPE_PERIODE']=$objAbon->formules[$i]->type_periode;
  4.   $tab['PRIX']=$objAbon->formules[$i]->prix;
  5.   array_push($_SESSION['FORMULE'],$tab);
  6. }


....
 
plus loin pour effacer un element d'un tableau j'ai essayer ceci

Code :
  1. $tab['PERIODE']=$objFormule->periode;
  2. $tab['TYPE_PERIODE']=$objFormule->type_periode;
  3. $tab['PRIX']=$objFormule->prix;
  4. if(in_array($tab,$_SESSION['FORMULE']))
  5.    unset($_SESSION['FORMULE'],$tab);


 
mais ca n'a pas l'air de fonctionner, et je m'en doutais un peu a la base.
Si qqn a une idée ?
 
Et en fait en relisant le code je me demandais pq je ne passais pas directement l'objet objFormule (ou objAbonnement->formules[$i] //tableau d'obj formule) directement
dans le tableau $_SESSION['FORMULE']
Donc comment après effacer un objet d'un tableau d'objet ?


Message édité par GuYzMo le 22-02-2006 à 19:56:00
Reply

Marsh Posté le 22-02-2006 à 19:51:44   

Reply

Marsh Posté le 23-02-2006 à 12:26:30    

Heu,  [:sh@rdar] ?
Si t'avais lu convenablement la documentation de unset ( http://fr.php.net/manual/fr/function.unset.php ), t'aurais vu que ca suprime les variable qu'on lui passe en paramettre, donc "unset($_SESSION['FORMULE'],$tab);" suprimera "$_SESSION['FORMULE']" et "$tab"
 
A savoir que si tu veux effacer un élément d'un tableau, il faut conaitre l'indice qui lui correspond.
T'as utilisé in_array, ( http://fr.php.net/manual/fr/function.in-array.php ) c'est bien, mais ca te dit juste si l'élément existe dans le tableau et ca ne te donne pas l'indice dans lequel il se trouve.
Si t'avais lu la liste des fonctions "proche" de celle ci (ligne "Voir aussi " de la page de la documentation situé généralement juste au dessus des commentaires) t'aurais vu qu'il existe un "array_search". ( http://fr.php.net/manual/fr/function.array-search.php ) En lisant la description de cette fonction tu véras que c'est ce dont tu as besoin.
 
Vu ce que t'as déjà fait, t'arriveras surement à t'en sortir tout seul à partir de là.

Reply

Marsh Posté le 23-02-2006 à 18:41:20    

je sais deja tout ca, je passe mes journées ds la doc et sur le net
 

Code :
  1. $delete=$_REQUEST['delete'];
  2. $key=array_search($delete,$_SESSION['ACTI_ID_TAB']);
  3. unset($_SESSION['ACTI_ID_TAB'][$key]);
  4. sort($_SESSION['ACTI_ID_TAB']);


 
jutilise deja ceci pour effacer une ligne d'un tableau d'id.
 
je pense avoir essayer le meme principe avec un tableau de tableau, il me semblait que ca foirait, je vais retenter l'expérience.
J'ai ecrit le code de mon premier post, en me basant sur ce code-ci que j'avais deja fait auparavant. Et mea culpa j'ai mal regardé et j'ai pris mon [key]
pour un second paramètre, j'en ai déduis que le second paramètre etait la clé réferençant la ligne à effacer. Et dans mon premier exemple j'utilisais in_array pour vérifier que l'élément se trouvait bien dans mon tableau avant d'essayer de l'effacer.
 
Cela dit merci pour ta réponse, même si je pense lire convenablement la doc et ne pas poster sur ce forum au moindre petit problème.


Message édité par GuYzMo le 23-02-2006 à 18:50:44
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed