Page 1 sur 1

chaine de caractères et tableau..

Posté : 23 mars 2010, 20:51
par Sebast076
Bonjour,

voici mon problème.

j'ai des chaines de caractères sous cette forme :

Code : Tout sélectionner

0,510,0,0,,1,0,0,0,0,0,-1088699593,0,0,0,0,0/1,2035,0,0,,1,0,-1,0,0,0,549801271,0,0,0,0,0/[etc.....]
et je voudrai faire en sorte de stocké les différents éléments de cette chaine dans un tableau comme suis :
$tableau[0]['Num'] = 0
$tableau[0]['Id'] = 510
etc.. jusqu'au séparateur '/'
et qu'après ce séparateur les données soit stockées dans $tableau[1]['Nom_Colonne']

jusqu'à présent j'ai fait ceci :
preg_match_all("/([0-9,-]*)\//i", $inventory, $matches);
qui me donne comme résultat :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => 0,2552,0,0,,356,0,-1,0,0,0,878540022,0,0,0,0,0/ [1] => 1,2823,0,0,,2,0,-1,0,0,0,67835230,0,0,0,0,0/ [2] => 2,21037,0,0,,1378,0,-1,0,0,0,-1230420462,0,0,0,0,0/ [3] => 4,3221,0,0,,1,0,-1,0,0,0,-586787955,0,0,0,0,0/ [4] => 5,2026,0,0,,9483,0,-1,0,0,0,-359549570,0,0,0,0,0/ ) [1] => Array ( [0] => 0,2552,0,0,,356,0,-1,0,0,0,878540022,0,0,0,0,0 [1] => 1,2823,0,0,,2,0,-1,0,0,0,67835230,0,0,0,0,0 [2] => 2,21037,0,0,,1378,0,-1,0,0,0,-1230420462,0,0,0,0,0 [3] => 4,3221,0,0,,1,0,-1,0,0,0,-586787955,0,0,0,0,0 [4] => 5,2026,0,0,,9483,0,-1,0,0,0,-359549570,0,0,0,0,0 ) )
Mais maintenant je bloque sur la façon de procéder pour pouvoir récupérer toutes les données de $matches[1] et les mettre dans mes tableau ...

Quelqu'un pourrait il m'aider s'il vous plait ?

Re: chaine de caractères et tableau..

Posté : 23 mars 2010, 21:43
par stopher
Salut ,

Si ta chaine est constante , dans les amplacements de valeurs , tu peux tres bien utiliser la fonction explode()

Tu l'utilises dans un premier temps comme ceci
$tChaines = explode("/",$chaine);
Ainsi tu te retrouve avec un tableau avec une entrée par "suite"

Il ne te reste plus qu'à parcourir ton tableau et découper chaque chaine par les "," pour les mettre en tableau associatif
ex:
$curseur = 0;
foreach( $tChaines AS &$suite  ){
    $tVal = explode(',',$suite);
    $tableau[$curseur]['Num'] = $tVal[0];
    $tableau[$curseur]['Id'] = $tVal[1];
    // ... 
}
Te voilà avec tes données structurées !

Edit : tu peux aussi utiliser la fonction array_fill_keys() pour remplir ton tableau associatif exemple :
//initialise le curseur
$curseur = 0;
//initialise les clef dans l'ordre
$keys = array('Num', 'Id');

//explore chaque suite
foreach( $tChaines AS &$suite  ){

    //découpe la suite
    $tVal = explode(',',$suite);
    //rempli le tableai associatif
    $tabFinal = array_fill_keys($keys, $tVal);
    
}
ch.