Fichier texte et tableau a double entréé

Signaler
Messages postés
37
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
12 janvier 2011
-
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
Bonjour,

j'ai un fichier de la forme :

A|C|30|
B|D|100|
D|B|20|
B|A|150|
G|I|15|
A|G|40|
C|C|30|

J'aimerais créer un tableau a double dimension indexéb (par des chaines de car) par la premiere colonne et la seconde et alimenté par la troisieme ...

je n'ai aucune idée de comment faire malgré mes recherches !!

mageek

3 réponses

Messages postés
37
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
12 janvier 2011

J'ai commencé par cela :

$fic = data.txt;
$taille_fic = filesize("$fic");	

// si le fichier existe et qu'il n'est pas vide
if (file_exists("$fic") && ($taille_fic != 0))
{
$tab_fic = file("$fic");
$nb=count($tab_fic);
$i = 0;

while ($i < $nb) // Tant que l'on est pas à la fin du fichier
{
$tab_1 = explode('|', $tab_fic[$i]); // on explose la ligne à l'indice i
$tab_2 = explode('|', $tab_fic[$i+1]); // on explose la ligne à i+1

$nom = $tab_1[0];
$prenom = $tab_1[1];
$tps = $tab_1[2]


$tab = array();
if (isset($tab[$nom][$prenom]) // si le couple colonne - ligne existe
{ 
      $tab[$nom][$prenom] = $tab[$nom][$prenom] + $tps;  
}
else
{ 
      $tab[$nom][$prenom] = $tab[$nom][$prenom] // sinon on crée le couple colonne - ligne 
}



mageek
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
bonjour
une piste
a++

// utilise sort();
//http://php.net/manual/en/function.sort.php

<?php
$fic = "data.txt";
$taille_fic = filesize($fic);	

// si le fichier existe et qu'il n'est pas vide
if (file_exists($fic) && ($taille_fic != 0))
{
$tab_fic = file($fic);
print_r($tab_fic);
echo '
';

$nb=count($tab_fic);
echo $nb.'
';

$i = 0;

    $t=array();
    foreach($tab_fic as $k => $v){
    //explode('|',$v,3);
    echo $v;
    $t[] = explode ("|",$v);
    }


echo '
';
echo '';
print_r($t);
echo '

';
}
        
// utilise sort(); 
//http://php.net/manual/en/function.sort.php      
?>
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,


Un truc comme ça plutôt, non ?

$sContents = file($fic);
$tab = array();

foreach ($sContents as $line) {
    $aRes = str_getcsv($line, '|');
    if (false === array_key_exists($aRes[0], $tab))
        $tab[$aRes[0]] = array();

    array_push($tab[$aRes[0]], $aRes[2]);
}
echo '';
print_r($tab);
echo '

';


Cordialement,

Kohntark -