parse fichier et récurssivité :)

Eléphant du PHP | 422 Messages

30 juin 2014, 14:39

hello

exemple de fichier
param1 value1 value2 value3
param1 valueS value3 value5 value8
param3 value1 value2
obj1 valueA valueB valueC
obj2 valueZ valueD valueG
param4 value9 value4
obj3 valueG
obj4 valueU valueP
param5 value0 value3
les objets sont rattachés au param du dessus via :espace: puis mots

j'ai un code qui récupère fait un tableau du tout mais c'est pas récursive (donc les niveau :espace::espace: mots ... ca passe pas :))

array( 'param1' => array( 'value' => ...

une idée pour faire ca en récursif ?
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 juin 2014, 16:04

salut,

c'est pas clair ta demande

tu veux ça comme tableau au final ?
<?php
$x = [
    'param1' => ['value1', 'value2', 'value3', 'valueS', 'value3', 'value5', 'value8'],
    'param3' => ['value', 'value2'],
    'obj1'   => ['valueA', 'valueB', 'valueC'],
    'obj2'   => ['valueZ', 'valueD', 'valueG'],
    'param4' => ['value9', 'value4'],
    'obj3'   => ['valueG'],
    'obj4'   => ['valueU valueP'],
    'param5' => ['value0 value3']
];
si oui ce n'est pas super compliqué, il 'suffit' de vérifier si l'index existe déjà dans le tableau, si oui du ajoute (si tu utilise toujours $tab[$param][] = $value cela ne pose pas de soucis).

Ceci dit j'ai p'tet mal compris la question ;)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 1339 Messages

30 juin 2014, 16:09

C'est pas tres joli comme code mais ca marche :)
<?php
	$fichier = 'param1 value1 value2 value3
param1 valueS value3 value5 value8
param3 value1 value2
obj1 valueA valueB valueC
obj2 valueZ valueD valueG
param4 value9 value4
obj3 valueG
obj4 valueU valueP
param5 value0 value3';

	$array = array();
	$explode = explode("\n", $fichier);
	foreach($explode as $v) {
		$explode2 = explode(' ', $v);
		foreach($explode2 as $k => $val) {
			if($k == 0) { $key = $val; } else { $array[$key][] = $val; }
		}
	}
	
	print_r($array);
	
?>
Bon sinon tu me fais un message privé et on se fait un TeamViewer