[Résolu] Supprimer une ligne d'un array sans trier ?

Supprimer une ligne d'un array sans trier ? [Résolu] - PHP - Programmation

Marsh Posté le 09-11-2007 à 16:00:26    

Bonjour.
 
Je débute en php et j'ai un problème (oui c'est pour mes cours en alternance):
 
J'ai un tableau dans une variable de session: $_SESSION['chantier'].
C'est normalement un tableau associatif: "clef_que_je_veut"=>"valeur"
"clef_que_je_veut" est un code numérique correspondant à une référence d'outil de chantier
"valeur" est le nombre d'exemplaires sur le chantier
 
Et si via mes pages j'arrive à ajouter des lignes a ce tableau et à augmenter la "valeur" en l'incrémentant je ne parviens pas a correctement supprimer une ligne du tableau.
 
En effet j'utilise la fonction

Code :
  1. array_splice()

Et si je retire bien la ligne voulue cela à pour effet de trier le tableau et de me faire perdre mes "clef_que_je_veut" car elle sont numérique.
Tout est "renuméroté" à partir de zero
 
N'existe-t-il pas un moyen de supprimer une ligne d'un array sans qu'il soit retrié ?
Ou n'existe-t-il pas un moyen de forcer mes "clef_que_je_veut" à être des chaines de caractère quand je les met dans mon tableau ?
 
J'ai tenté d'ajouter des " " et des ' ' et même d'imbriquer et de concaténer via des ' " '.$variable.' " ' quand je donne mes argument lors de l'appel de ma page pour "forcer" l'opération mais ça ne fonctionne pas.[:bartmat]


Message édité par LimDul le 09-11-2007 à 21:59:08

---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"
Reply

Marsh Posté le 09-11-2007 à 16:00:26   

Reply

Marsh Posté le 09-11-2007 à 16:46:26    

Ben, utilise unset(), il marche aussi pour les élements d'un tableau.

Reply

Marsh Posté le 09-11-2007 à 17:18:30    

Si tu fais un unset, il y aura des trous dans l'indexation de ton tableau (si elle est numérique) donc tu devras le lire avec un foreach ($array as $key => $value)


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 09-11-2007 à 17:27:11    

NewsletTux a écrit :

Si tu fais un unset, il y aura des trous dans l'indexation de ton tableau (si elle est numérique) donc tu devras le lire avec un foreach ($array as $key => $value)


 
Il ne veut pas de réindexation et est visiblement capable de faire une affectation simple qui écraserait la valeur précédente, je suppose donc que le "trou" ne le dérange pas  ;)

Reply

Marsh Posté le 09-11-2007 à 20:56:31    

En effet je ne veut pas de réindexation et donc les trous ne me gène pas (et son même désirés).
Ce n'est pas un tableau indexé numériquement que j'utilise mais un tableau associatif (sauf que mes clefs au lieu d'être des chaines de caractère alphabétique sont des numéro de référence de matériel).
 
Pour en revenir à la fonction unset()
 
Je parviens à l'utiliser dans un tableau simple avec la nomenclature suivante:

Code :
  1. unset($tableau['clef']);

Mais je ne parviens pas à l'utiliser dans mon tableau imbriqué $_SESSION['chantier']
Or si je fait

Code :
  1. unset($_SESSION['chantier'])

C'est tout mon tableau que je supprime (j'ai testé :whistle:)
Et si je fait

Code :
  1. unset($_SESSION['chantier']['235689'])

cela ne fonctionne pas, quand j'affiche mon tableau la clef 235689 avec le nombre d'exemplaire est toujours présente. J'ai tenté de mettre des parenthèses et je rajouter des " " et des ' ' mais sans succès.
 
Comment dois-je l'utiliser dans un tableau imbriqué ?


---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"
Reply

Marsh Posté le 09-11-2007 à 21:18:27    

Exactement comme ça, mais si les clés du tableau imbriqué sont numériques, faut pas les mettre entre quotes...

Reply

Marsh Posté le 09-11-2007 à 21:58:17    

[:bibije]  [:bibije]  [:bibije] naceroth [:bibije]  [:bibije]  [:bibije]  
 
 
C'est en effet les second ' ' qui bloquaient.
Elle sont numérique certes mais comme je m'en sert pas comme numérique mais comme chaine de texte cela prète à confusion, je mélange.
Pour ceu qui veulent le fin mot de l'histoire j'obtiens le code suivant:

Code :
  1. if ($_GET['retirer']){
  2.  unset($_SESSION['chantier'][$_GET[retirer]]);
  3. }

Ce qui me permet de retirer un outil d'un chantier en appelant l'url:

Code :
  1. index.php?&retirer=235689

(avec 235689 la référence de l'outil)
 
 
 
 
Problème résolu merci à vous.
 [:athome]  [:athome]  [:athome]  [:athome]


---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"
Reply

Sujets relatifs:

Leave a Replay

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