[PHP] Utiliser les entetes d'un fichier

bish0p
Invité n'ayant pas de compte PHPfrance

07 oct. 2010, 15:54

Bonjour à tous,

Débutant en PHP (je ne suis pas developpeur), j'ai besoin d'aide.

Je récupere un fichier csv sur par le biais d'une URL
$array_fichier = file('http://192.168.0.1/fichier.csv');
Le fichier est structuré de la sorte

nom\tprénom\tage

Je souhaite utilisé les titres de ce fichier comme variable et dans mon code.
        for($i=1;$i<sizeof($array_fichier);$i++){ // =1 pour le pas prendre en compte l'en-tete
           $array_ligne = explode("\t",$array_fichier[$i]); //tabulation c'est le separateur
                if ( isset($array_ligne[2]) && strlen(trim($array_ligne[2])) > 0  ) { //la au lieu d'utiliser le numéro de le colonne 2, je veux utiliser le titre 'prénom' par exemple
                $array_final[] = $array_ligne[2]; // idem utilisé le titre et pas le numéro
                }
           }
Mon besoin est simple, je souhaite gérer les changements dans le cas ou je dois ajouter de nouvelles colonnes.

Merci.

devlop78
Invité n'ayant pas de compte PHPfrance

07 oct. 2010, 17:36

Je n'ai pas bien compris la question mais ...

[2] n'est pas la deuxième colonne mais la troisième (la première étant 0), donc pas le prénom mais l'age

Je ne suis pas sûr de comprendre donc :

$var = "prenom";
$$var cherchera la variable $prenom

et sinon

$array_ligne[$array_ligne[0][2]] = $array_ligne[$i][2]; // A voir jusqu'ou Php accepte les caractère spéciaux dans les clés

bish0p
Invité n'ayant pas de compte PHPfrance

08 oct. 2010, 12:16

Exemple :

nom\tprénom\tcouleur
blanc\tmichel\tblanc
blanc\teric\tnoir
noir\tmichel\tblanc
jackson\tmichael\tgris

voici le script avec ajout de prenom au lieu de 1 (et pas 2...)

for($i=1;$i<sizeof($array_fichier);$i++){
$array_ligne = explode("\t",$array_fichier[$i]); //tabulation c'est le separateur
if ( isset($array_ligne[prenom]) && strlen(trim($array_ligne[prenom])) > 0 ) {
$array_final[] = $array_ligne[prenom];
}
}

$array_final doit etre donc conternir tous les prenoms

$array_final[] = $array_ligne[$prenom];

ViPHP
ViPHP | 5462 Messages

08 oct. 2010, 12:24

tu recupere pas via $array_ligne[prenom]; mais $array_ligne[1];

Invité
Invité n'ayant pas de compte PHPfrance

08 oct. 2010, 14:08

tu recupere pas via $array_ligne[prenom]; mais $array_ligne[1];
Justement je veux récuperer via $array_ligne[prenom]; !!!!

Dans le cas où une colonne est ajouté $array_ligne[1]; n'est plus vrai.

ViPHP
ViPHP | 5462 Messages

08 oct. 2010, 14:32

il faut récupérer la première ligne et faire un array_combine dans la boucle après