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

  FORUM HardWare.fr
  Programmation
  PHP

  créer un tableau a partir d'une chaine

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

créer un tableau a partir d'une chaine

n°1954563
KBAL
They live
Posté le 03-01-2010 à 16:32:27  profilanswer
 

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

mood
Publicité
Posté le 03-01-2010 à 16:32:27  profilanswer
 

n°1954565
esox_ch
Posté le 03-01-2010 à 16:35:09  profilanswer
 

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
n°1954571
stealth35
Posté le 03-01-2010 à 17:35:37  profilanswer
 

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
n°1954573
KBAL
They live
Posté le 03-01-2010 à 17:59:26  profilanswer
 

Merci a vous deux, ca fonctionne  :)

n°1954574
esox_ch
Posté le 03-01-2010 à 18:01:42  profilanswer
 

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
n°1954575
KBAL
They live
Posté le 03-01-2010 à 18:13:02  profilanswer
 

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

n°1954608
stealth35
Posté le 03-01-2010 à 20:28:11  profilanswer
 

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
n°1954617
esox_ch
Posté le 03-01-2010 à 20:49:43  profilanswer
 

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
n°1954635
KBAL
They live
Posté le 03-01-2010 à 21:51:28  profilanswer
 

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
n°1955057
KBAL
They live
Posté le 05-01-2010 à 11:19:45  profilanswer
 

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. ?>

mood
Publicité
Posté le 05-01-2010 à 11:19:45  profilanswer
 

n°1955059
stealth35
Posté le 05-01-2010 à 11:36:26  profilanswer
 

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

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

  créer un tableau a partir d'une chaine

 

Sujets relatifs
Choisir entre une liste de variables ou un tableauprobleme de choix dans une base mysql a partir d'une date
[Excel]Connaître la dernière ligne d'un tableauCréer un sous formulaiee
[VBscript] comparaison de chaine/filtre(résolu)Créer une grille sous Visual Studio
[SHELL] récuperer les nieme caract. dans des chaine obtenue par | grepCreer page avec formulaires
Entrer des données dans un tableau initialement videCreer des champs en fonction d'une autre table
Plus de sujets relatifs à : créer un tableau a partir d'une chaine


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