2011-09-08 6 views
2

Disons que j'avais une chaîne comme celle-ci.Explose une chaîne dans un tableau 2d

pomme: papier: rouge, poire: rock: bleu, pêche: ciseaux: vert

Comment voulez-vous exploser cela dans un tableau multidimensionnel? Pourriez-vous faire une boucle partagée imbriquée? Quelque chose comme diviser la chaîne sur la virgule, puis à nouveau sur le côlon dans une boucle. Comment utilisez-vous exploser de cette manière? Je dois manquer quelque chose d'évident. Le résultat final devrait être quelque chose comme.

[0] [0] = pomme [0] [1] = poire [0] [2] = pêche

[1] [0] = papier [1] [1] = roche [1 ] [2] = ciseaux

[2] [0] = rouge [2] [1] = bleu [2] [2] = vert

Merci.

Répondre

8

Vous pouvez appeler exploser plusieurs fois:

$string = 'apple:paper:red,pear:rock:blue,peach:scissors:green'; 
$result = array(); 
foreach (explode(',', $string) as $piece) { 
    $result[] = explode(':', $piece); 
} 
+0

Cela divise la chaîne en un tableau 2d, mais le contenu ne sont pas triés de la manière souhaitée. Il finit comme "00 pomme 01 papier 02 rouge" au lieu de "00 pomme 01 poire 02 pêche". Est-ce qu'une sorte de pré-tri est nécessaire? – oljones

0

Donnez un aller:

$string = 'apple:paper:red,pear:rock:blue,peach:scissors:green'; 
foreach (explode(',', $string) as $key=>$piece) { 
    foreach (explode(':', $piece) as $k=>$column) { 
    $result[$key][$k] = $column; 
    } 
} 

peut aider à faire sortir comme vous voulez. (J'ai testé et cela fonctionne pour moi;))