[Résolu] Problème de tableau multidimensionnel et associatif

[Résolu] Problème de tableau multidimensionnel et associatif - PHP - Programmation

Marsh Posté le 01-05-2013 à 13:28:41    

Bonjour à tous,
 
Voila j'aimerais créer un tableau multidimensionnel et associatif à partir d'une chaine de caractères.
 
la chaine est sous cette forme :
1(S-10,M-20,L-20,XL-0,XXL-20)2(S-20,M-0,L-20,XL-20)6(S-30,M-1,L-20,XL-0,XXL-0)
 
et j'aimerais extraire les données de cette chaine dans un tableau qui devra être sous cette forme :
 

Citation :

array() {
  [1] => array() {
             [S]=> 10
             [M]=> 20
             [L]=> 20
             [XL]=> 0
             [XXL]=> 20
  },
  [2] => array() {
             [S]=> 20
             [M]=> 0
             [L]=> 20
             [XL]=> 20
  },
  [6] => array() {
             [S]=> 30
             [M]=> 1
             [L]=> 20
             [XL]=> 0
             [XXL]=> 0
  }
}


 
Merci d'avance pour vos réponses ...


Message édité par webelix le 01-05-2013 à 21:20:30
Reply

Marsh Posté le 01-05-2013 à 13:28:41   

Reply

Marsh Posté le 01-05-2013 à 16:42:59    

J'ai un début de réponse mais je bloque au dernier niveau.
Voici déjà ce que j'ai fait, si quelqu'un peu m'aider.
 

Citation :

$tab = "1(S-10,M-20,L-20,XL-0,XXL-20)2(S-20,M-0,L-20,XL-20)6(S-30,M-1,L-20,XL-0,XXL-0)";  
$tab = array_filter(explode(" )", $tab));
 
 for($t1 = 0; $t1 < sizeof($tab); $t1++) {
  $tab1[] = array_filter(explode("(", $tab[$t1]));
   
  for($t2 = 0; $t2 < sizeof($tab1[$t1]); $t2++) {
   $tab2[$tab[$t1][0]] = array_filter(explode(",", $tab1[$t1][$t2]));  
  }
 }


Ce qui donne le tableau $tab2

Citation :

Array
(
    [1] => Array
        (
            [0] => S-10
            [1] => M-20
            [2] => L-20
            [3] => XL-0
            [4] => XXL-20
        )
 
    [2] => Array
        (
            [0] => S-20
            [1] => M-0
            [2] => L-20
            [3] => XL-20
        )
 
    [6] => Array
        (
            [0] => S-30
            [1] => M-1
            [2] => L-20
            [3] => XL-0
            [4] => XXL-0
        )
 
)


Reply

Marsh Posté le 01-05-2013 à 19:42:33    

Salut a toi, moi je le ferais comme cela :

Citation :


$tab = "1(S-10,M-20,L-20,XL-0,XXL-20)2(S-20,M-0,L-20,XL-20)6(S-30,M-1,L-20,XL-0,XXL-0)";  
$tab = explode(" )", $tab);
 
$tableau_final = array();
 
foreach($tab as $v) {
 $tab_tmp_0 = explode("(", $v);
 if(isset($tab_tmp_0[1])) {
  $tab_tmp_1 = explode(",", $tab_tmp_0[1]);
  $array_tmp = array();
  foreach($tab_tmp_1 as $w) {
   $tab_tmp_2 = explode('-',$w);
   $array_tmp[$tab_tmp_2[0]]=$tab_tmp_2[1];
  }
  $tableau_final[$tab_tmp_0[0]] = $array_tmp;
 }
}
 
var_dump($tableau_final);


Message édité par winimalcav le 01-05-2013 à 19:46:57
Reply

Marsh Posté le 01-05-2013 à 20:47:04    

Un grand merci pour ta solution !!!
 
J'étais pas loin de cette réponse pourtant ;)

Reply

Sujets relatifs:

Leave a Replay

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