créer un tableau a partir d'une chaine

Répondre
crass
le 03/01/2010 à 16:34
crass
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
=> tata
[c] => titi
)

merci pour votre aide :)
moogli
le 03/01/2010 à 22:40
moogli
Salut,

tu peut utiliser preg_split http://www.php.net/manual/fr/function.preg-split.php

le mieux pour moi est d'utiliser explode évêché la virgule en séparateur puis un foreach sur le tableau retourné pour construire le tableau final avec un autre explode sur le egale.

<?php
$var="a=toto,b=tata,c=titi";
$tab=explode(',',$var);
foreach ($tab as $ligne){
$a=explode('=',$ligne);
$tableaufinal[]=array($a[0],$a[1]);
}
?>


@+
Il en faut peu pour être heureux !!!!!
crass
le 04/01/2010 à 09:32
crass
Merci !

par contre le résultat n'est pas celui attendu :

Array
(
[0] => Array
(
[0] => a
[1] => toto
)
[1] => Array
(
[0] => b
[1] => tata
)
[2] => Array
(
[0] => c
[1] => titi
)
)
jeca
le 04/01/2010 à 15:08
jeca
Bonjour,

Ce code :
<?php
$var = 'a=toto,b=tata,c=titi';
$tab = explode(',', $var);

$tableaufinal = array();
foreach ($tab as $ligne)
{
$a = explode('=', $ligne);
$tableaufinal[$a[0]] = $a[1];
}

echo '<pre>';
print_r($tableaufinal);
echo '</pre>';
?>

retourne :
Array
(
[a] => toto
=> tata
[c] => titi
)
cordialement
LA GLOBULE
le 04/01/2010 à 17:03
LA GLOBULE
En es tu sur ?

Il fonctionne "parfaitement" sur ton exemple, mais quid de cet exemple ?

$var = "a=to,to,bre=ta=ta,c=titi,,re";

Que doit on faire dans ce genre de cas ?
Est ce que seul "c" est considéré comme valide ?
Est ce que "bre" peut prendre la valeur "ta=ta" ?
Est ce que "a" prend la valeur "to,to" ?
crass
le 04/01/2010 à 17:10
crass
Oui bien sur c'est pour mon cas

cad lorsque les données d'entrées sont forcement saisi comme cela.

si autre chose est saisi cela doit être ignoré.
LA GLOBULE
le 12/01/2010 à 00:41
LA GLOBULE
Donc cela ne fonctionne pas "parfaitement" (ie. comme tu le souhaites).

Mais j'ai l'impression que tu as lu trop vite mon message, car tu réponds juste "oui" d"une manière générale, alors que je posais plusieurs questions :/
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours