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

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1640341
LimDul
Comment ça j'ai tort ?
Posté le 09-11-2007 à 16:00:26  profilanswer
 

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"
mood
Publicité
Posté le 09-11-2007 à 16:00:26  profilanswer
 

n°1640376
naceroth
Posté le 09-11-2007 à 16:46:26  profilanswer
 

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

n°1640423
NewsletTux
<Insérez ici votre vie />
Posté le 09-11-2007 à 17:18:30  profilanswer
 

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
n°1640435
naceroth
Posté le 09-11-2007 à 17:27:11  profilanswer
 

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  ;)

n°1640537
LimDul
Comment ça j'ai tort ?
Posté le 09-11-2007 à 20:56:31  profilanswer
 

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"
n°1640543
naceroth
Posté le 09-11-2007 à 21:18:27  profilanswer
 

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

n°1640553
LimDul
Comment ça j'ai tort ?
Posté le 09-11-2007 à 21:58:17  profilanswer
 

[: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"

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

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

 

Sujets relatifs
mail, PJ et free: si qqun a reussi... [RESOLU]date de modification de page en javascript [résolu en php]
Probleme avec ob_start [RESOLU]ziupgenius en ligne de commande
[Resolu]Pb création connection pool[resolu] php et mysql : requete trop longue?
[Débutant] Trier un tableauDéplacement de ligne sur des Données filtrées
problème dans un bloc PL/SQL[RESOLU][RESOLU][D 7] utilisation de try...except...end
Plus de sujets relatifs à : [Résolu] Supprimer une ligne d'un array sans trier ?


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