créer un tableau a partir d'une chaine

créer un tableau a partir d'une chaine - PHP - Programmation

Marsh Posté le 03-01-2010 à 16:32:27    

Bonjour,
 
Question :
 
Je voudrais créer un tableau a partir d'une chaine de caractère.
 
La chaine de caractère se compose ainsi :
 
$var = "a=toto,b=tata,c=titi";
 
le tableau lui sous cette forme  
 
Array
(
    [a] => toto
    [b] => tata
    [c] => titi
)
 
merci pour votre aide  :)

Reply

Marsh Posté le 03-01-2010 à 16:32:27   

Reply

Marsh Posté le 03-01-2010 à 16:35:09    

Utilise "explode". Tu explodes le caractère ',' , ce qui te crée un tableau, ensuite tu boucles sur les entrées de ce tableau, en explosant sur '=' et tu crées ton tableau.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 03-01-2010 à 17:35:37    

ou tu remplace les ',' par des '&'
et apres tu fais  parse_str

 
Code :
  1. parse_str(str_replace(',', '&', $var), $array);
  2. print_r($array);

Message cité 1 fois
Message édité par stealth35 le 03-01-2010 à 17:37:14
Reply

Marsh Posté le 03-01-2010 à 17:59:26    

Merci a vous deux, ca fonctionne  :)

Reply

Marsh Posté le 03-01-2010 à 18:01:42    

stealth35 a écrit :

ou tu remplace les ',' par des '&'  
et apres tu fais  parse_str
 

Code :
  1. parse_str(str_replace(',', '&', $var), $array);
  2. print_r($array);



 
Faut juste faire gaffe là parce que s'il a un truc genre "n=truc&astuce" , bein ça lui pête à la gueule..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 03-01-2010 à 18:13:02    

arf oui en effet,
 
je comptai l'utiliser dans deux cas distinct, dans le premier pas de soucis par contre dans le deuxième il peut y avoir des valeurs de ce type (par exemple des appels d'URL avec des transfert de variable).

Reply

Marsh Posté le 03-01-2010 à 20:28:11    

esox_ch a écrit :

 

Faut juste faire gaffe là parce que s'il a un truc genre "n=truc&astuce" , bein ça lui pête à la gueule..

 

d'un coté c'est pareil si il a

 

a=bonjour,truc

 

ou

 

b=1+1=2

 
KBAL a écrit :

arf oui en effet,

 

je comptai l'utiliser dans deux cas distinct, dans le premier pas de soucis par contre dans le deuxième il peut y avoir des valeurs de ce type (par exemple des appels d'URL avec des transfert de variable).

 

ducoup d'ou previennent tes données ?


Message édité par stealth35 le 03-01-2010 à 20:29:04
Reply

Marsh Posté le 03-01-2010 à 20:49:43    

Oui, sauf que dans ces cas là, son string n'est plus valide.
Si ce genre de string peut arriver, la seule solution c'est une regexp


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 03-01-2010 à 21:51:28    

dans les deux cas les données sont saisi par un utilisateur, celui ci a des consignes de saisi strict.
 
pour le premier cas cela est forcement celui décris ci dessous... et j'ai le choix  de la formulation au cas ou.
 
$var = "a=toto,b=tata,c=titi";
 
dans le deuxième cas, en fait les url sont d'abord passé transformé comme cela & → %26 , par contre le séparateur lui est justement un & et je n'ai pas le choix de la formulation
 
$var = "&a=toto&b=tata&c=titi";


Message édité par KBAL le 03-01-2010 à 21:52:31
Reply

Marsh Posté le 05-01-2010 à 11:19:45    

solution  sur phpfacile :
 

Code :
  1. <?php
  2. $var = 'a=toto,b=tata,c=titi';
  3. $tab = explode(',', $var);
  4. $tableaufinal = array();
  5. foreach ($tab as $ligne)
  6. {
  7. $a = explode('=', $ligne);
  8. $tableaufinal[$a[0]] = $a[1];
  9. }
  10. echo '<pre>';
  11. print_r($tableaufinal);
  12. echo '</pre>';
  13. ?>

Reply

Marsh Posté le 05-01-2010 à 11:19:45   

Reply

Marsh Posté le 05-01-2010 à 11:36:26    

KBAL > tu peu faire un return avec print_r  

Code :
  1. echo '<pre>' . print_r($array, true) . '</pre>';


comme ca t'as que une ligne a commenté  ;)


Message édité par stealth35 le 05-01-2010 à 11:36:41
Reply

Sujets relatifs:

Leave a Replay

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