Explode fichier.csv

Signaler
Messages postés
5
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 décembre 2005
-
Messages postés
510
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
23 mai 2008
-
Hello ,



Je ne connais pas grand chose au PHP et il y'a quelque chose qui
m'échappe lorsque que je veux ressortir chaque chaîne séparé par un
point virgule d'un fichier .csv.



Comme illustré ci-dessous , je suis obligé de passer par implode () si
je veux pouvoir ressortir chaque variable $tab correctement et je ne
saisis pas pourquoi ....



$path= "fichier.csv";

$file = implode ('',file("$path"));

$tab = explode (';' , $file);

print_r ($tab);



Si je fais :

$path= "fichier.csv";

$tab = explode (';' ,file ("$path"));

print_r ($tab);

Je tombe sur :

Notice : Array to string conversion in h:\... on line XXX


Array
(
[0] => Array
)



Par quoi faudrait-il que je remplace la fonction file() pour éviter
cela et est-ce que quelqu'un pourrait m'expliquer pourquoi ...



Merci d'avance.
A voir également:

5 réponses

Messages postés
510
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
23 mai 2008

tu peu la remplacer en ouvrant le fichier et le chargant dans une variable :

<?php
$fp = fopen("fichier.cvs",r);
$data = fread($fp,filesize("fichier.cvs"));
?>

et ensuite tu traite la variable $data...


----------------------
La lumière étant plus rapide que le son, un homme peu paraître brillant avant qu'il se mette a parler
-----------------
Messages postés
5
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 décembre 2005

Je te remercie c'est effectivement une solution mais malheureusement ça
ne fonctionnait pas car en exportant un tableau excel au format csv ,
Excel ne cloture pas les lignes par un point virgule donc je me
retrouvais avec la dernière valeur de la ligne et la première de la
ligne suivante pour une seule clé donc j'ai dû faire autrement .



J'ai trouvé cette fonction dans un bouquin :

function my_fgetcsv($filename,$sep)

{

$arr=file($filename);

$resultat=array("");

foreach ($arr as $elem)

{

$str=str_replace("*"," " ,$elem);

$buf=explode ($sep,$str);

$resultat=array_merge ($resultat,$buf);

}

array_shift($resultat);

return $resultat;

}

puis j'ai ajouté ça



$arr=my_fgetcsv("fichier.csv",";");

while ($val=each($arr))

{

echo "clé :",

"",$val[key],"";

echo " valeur : ","",$val[value],"","
";

}



Ca fonctionnait parfaitement avec EasyPHP1.6 mais malheureusement plus avec la 1.8 ...

Notice: Use of undefined constant key - assumed 'key'



J'en déduis que le probléme provient de register_globals
qui est passé à OFF .Je serais incapable de contourner ce problème pour
le moment mais je vais commencer à me renseigner . Si vous avez
des suggestions n'hésitez pas , Merci d'avance ...
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
" while ($val= each($arr))
{
echo "clé :",
" ",$val[key]," ";
echo " valeur : ","",$val[value],"","
";
}"

Heu .... ?

foreach ( $arr as $key =>$val ) {
echo 'clé : '.$key.'';
echo 'valeur : '.$val.'
';
}

Pas plus simple ?
Messages postés
5
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 décembre 2005

En effet ,oui mais ça me fait contourner le problème alors que j'aurais
bien voulu savoir comment redéfinir la constante [key] ...
Messages postés
510
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
23 mai 2008

"J'en déduis que le probléme provient de register_globals qui est passé à OFF .Je serais incapable de contourner ce problème pour le moment mais je vais commencer à me renseigner . Si vous avez des suggestions n'hésitez pas , Merci d'avance ...
"

Si t'a ce problème en utilisant un serveur comme EasyPHP, donc apache, il faut que tu reconfigure apache et tu fais passer register_global à on...


----------------------
La lumière étant plus rapide que le son, un homme peu paraître brillant avant qu'il se mette a parler
-----------------