Tableau et chaine PHP

Résolu/Fermé
bilouze Messages postés 27 Date d'inscription lundi 9 août 2010 Statut Membre Dernière intervention 2 août 2012 - 1 août 2012 à 19:38
bilouze Messages postés 27 Date d'inscription lundi 9 août 2010 Statut Membre Dernière intervention 2 août 2012 - 2 août 2012 à 02:20
Bonjour,

J'ai une chaine :

$str = ''article:19;client:1';

que je voudrai transformer en un tableau qui donnerait ceci :

$array = array('article'=>19, 'client'=>1);

en l'affichant avec print_r($array); ça donnerait ça :

Array ( [article] => 19 [client] => 1 )

J'ai beau me secouer les méninges, là franchement je bloc! Est ce que quelqu'un aurait une petite solution pour faire ça ?

Merci d'avance;)





A voir également:

4 réponses

ghepardo Messages postés 26 Date d'inscription mercredi 14 mars 2012 Statut Membre Dernière intervention 24 janvier 2013 4
Modifié par ghepardo le 1/08/2012 à 20:46
$str = "article:19;client:1";
vous devez d'abord remplacer le point virgule:


$Resultat_str = str_ireplace(";" , ":" , $Resultat_str);
// remplacer le point virgule par deux points

$strToArray = explode(":", $Resultat_str);

// explosion du string et le convertir directement en Array
// vous aurez:
// $strToArray [0] => article; $strToArray [1] => 19; $strToArray [2] => client

//à vous de jouer
1
bilouze Messages postés 27 Date d'inscription lundi 9 août 2010 Statut Membre Dernière intervention 2 août 2012
1 août 2012 à 23:20
Merci pour ta réponse;)
en fait j'arrive à avoir un tableau de cette forme :

Array ( [0] => article [1] => 19 [2] => client [3] => 1 )

Ce que je n'arrive pas à faire c'est justement la partie "à vous de jouer" .
Il faudrait créer un tableau à partir de celui ci-dessus où les valeurs pair deviendrait les clés et les valeurs impair deviendrait les valeurs de ces clés.
Résultat : Array ( [article] => 19 [client] => 1 ) mais là je sais pas trop comment m'y prendre.
0
Luxerails Messages postés 159 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 24 décembre 2012 41
Modifié par Luxerails le 2/08/2012 à 01:35
A partir de là pour transformer les valeurs paires en clés et les valeurs impaires en valeurs de clés tu peux éventuellement faire

$newArray = array();
for($i=0;$i<count($strToArray);$i++)
if($i % 2 == 0) $newArray[$strToArray[$i]] = $strToArray[$i + 1];
0
bilouze Messages postés 27 Date d'inscription lundi 9 août 2010 Statut Membre Dernière intervention 2 août 2012
2 août 2012 à 02:20
Super ça marche! Merci à vous 2 ;)
0
ghepardo Messages postés 26 Date d'inscription mercredi 14 mars 2012 Statut Membre Dernière intervention 24 janvier 2013 4
1 août 2012 à 19:51
bonsoir,
pourquoi votre chaîne n'est pas elle même un tableau associatif:
vous écrivez: $str ['article'] = 19; $str ['client'] = 1;

si vous faites un print_r($str) ça vous donnera le même résultat.
0
bilouze Messages postés 27 Date d'inscription lundi 9 août 2010 Statut Membre Dernière intervention 2 août 2012
1 août 2012 à 19:57
Bonjour, en fait ce sont des paramètres renvoyés par Paypal lors d'un paiement. Je récupère un array avec dedans $tableau[CUSTOM] => article:19;client:1 donc je n'ai pas le choix ;)
0
Luxerails Messages postés 159 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 24 décembre 2012 41
1 août 2012 à 20:48
$str = "article:19;client:1";
$str = explode(';', $str);
$a = explode(':', $str[0]);
$b = explode(':', $str[1]);
$array = array($a[0] => (int) $a[1], $b[0] => (int) $b[1]);
print_r($array);
// Array ( [article] => 19 [client] => 1 ) [
0
ghepardo Messages postés 26 Date d'inscription mercredi 14 mars 2012 Statut Membre Dernière intervention 24 janvier 2013 4
1 août 2012 à 21:00
s'il existe plusieurs ";" vous ne trouverez pas une lettre au delà de z pour nommer vos variables, $strToArray un tableau ça sera mieux, cordialement
0