par
patos85 » 05 mars 2012, 14:26
Bonjour, j'ai besoin de trier un fichier en ordre alpha des noms de personnes, sauf que ceux-ci ne sont pas en début de ligne. j'ai donc découpé mes lignes en 3 arrays puis j'ai utilisé la fonction Array multisort
Code : Tout sélectionner
$fic = fopen($val,'rb');
$tb_col1= array();
$tb_col2 = array();
$tb_col3 = array();
$i = 0 ;
while($ligne = fgets ($fic)){
$tb_col1[$i] = substr($ligne,0,37);
$tb_col2[$i] = substr($ligne,37,40);
$tb_col3[$i] = substr($ligne,77,150);
$i++;
}
$i_max = $i;
fclose($fic);
array_multisort($tb_col2,$tb_col1,$tb_col3 );
$nomfic2 = substr($val,0,strlen($val)-4)."_trié.txt";
$fic2 = fopen($nomfic2,'w+');
for($i = 0; $i < $i_max; $i++){
fwrite ( $fic2, $tb_col1[$i].$tb_col2[$i].$tb_col3[$i]);
}
fclose($fic2);
seul souci, dans mon fichier de résultat trié, je retrouve toujours une ligne avec 2 enregistrements à suivre alors que tout le reste est correctement trié et je ne vois pas pourquoi...si quelqu'un a une idée, merci d'avance !
Bonjour, j'ai besoin de trier un fichier en ordre alpha des noms de personnes, sauf que ceux-ci ne sont pas en début de ligne. j'ai donc découpé mes lignes en 3 arrays puis j'ai utilisé la fonction Array multisort
[code]
$fic = fopen($val,'rb');
$tb_col1= array();
$tb_col2 = array();
$tb_col3 = array();
$i = 0 ;
while($ligne = fgets ($fic)){
$tb_col1[$i] = substr($ligne,0,37);
$tb_col2[$i] = substr($ligne,37,40);
$tb_col3[$i] = substr($ligne,77,150);
$i++;
}
$i_max = $i;
fclose($fic);
array_multisort($tb_col2,$tb_col1,$tb_col3 );
$nomfic2 = substr($val,0,strlen($val)-4)."_trié.txt";
$fic2 = fopen($nomfic2,'w+');
for($i = 0; $i < $i_max; $i++){
fwrite ( $fic2, $tb_col1[$i].$tb_col2[$i].$tb_col3[$i]);
}
fclose($fic2);[/code]
seul souci, dans mon fichier de résultat trié, je retrouve toujours une ligne avec 2 enregistrements à suivre alors que tout le reste est correctement trié et je ne vois pas pourquoi...si quelqu'un a une idée, merci d'avance !