Changer la 'key' d'un array..

Changer la 'key' d'un array.. - PHP - Programmation

Marsh Posté le 30-08-2011 à 14:13:01    

Bonjour à tous.. je vous expose mon problème en esperant trouver quelques réponses pour améliorer ma code actuel
 
voici une petite classe panier
 

Code :
  1. class mon_panier{
  2.  
  3.     public function add($nom, $qty, $taille){
  4.         $label = $nom.'-'.$qty.'-'.$taille;
  5.         $this->articles[$label] = array('test'=>'quelques valeurs');
  6.     }
  7.    
  8.     public function change_taile($label, $nouvelle_taille){
  9.        
  10.         $mon_article = $this->articles[$label];
  11.        
  12.         $this->articles[$label] = str_replace('XL', $nouvelle_taille, $this->articles[$label]);
  13.     }
  14. }


 
et voici comment j'ajoute un produit et je change une taille

Code :
  1. $test = new mon_panier();
  2. $test->add('TOTO/AG/USFR', 2, 'XL');
  3. $test->change_taile('TOTO/AG/USFR-2-XL', 'XXL');


 
mon objet a cette forme :
 

Code :
  1. mon_panier Object
  2. (
  3.     [articles] => Array
  4.         (
  5.             [TOTO/AG/USFR-2-XL] => Array
  6.                 (
  7.                     [test] => quelques valeurs
  8.                 )
  9.         )
  10. )


 
j'aimerais pouvoir changer TOTO/AG/USFR-2-XL par TOTO/AG/USFR-2-XXL, actuellement je supprime le produit et j'ajoute un nouveau avec la bonne taille, mais je n'aime pas cette facon de faire..
 
Est 'il possible de faire ce que j'aimerais ou alors ...

Reply

Marsh Posté le 30-08-2011 à 14:13:01   

Reply

Marsh Posté le 31-08-2011 à 14:05:50    

Ton problème est structurel.
 
Tel que ta structure est présentée, c'est impossible, car la taille (XL, XXL) fait partie de ta clé, or dans un tableau associatif, la clé est le point d'entrée.
 
Tu dois de fait passer cette taille en tant que valeur/attribut, et tant qu'à faire, utiliser des ids pour désigner tes produits :
 

Code :
  1. mon_panier Object
  2. (
  3.    [articles] => Array
  4.        (
  5.            [568442397] => Array
  6.                (
  7.                    [ref] => TOTO/AG
  8.                    [size] => USFR-2-XL
  9.                    [test] => quelques valeurs
  10.                )
  11.        )
  12. )


 

Code :
  1. setSize($a, 568442397, 'USFR-2-XL');
  2.  
  3. function setSize(&$a, $id, $size) {
  4.  $a[$id]['size'] = $size;
  5. }


Message édité par CyberDenix le 02-09-2011 à 21:17:12

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 02-09-2011 à 12:05:43    

merci de ta réponse, je vais réorganiser mon object panier ;-)

Reply

Sujets relatifs:

Leave a Replay

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