Page 1 sur 1

Parsage de fichier texte

Posté : 03 sept. 2008, 11:49
par agité
Hello,

Un petit problème pour parser un fichier texte, en fait j'ai fais une simple fonction qui me retourne un element d'un tableau en fonction d'une valeur du fichier comme ceci :
function idGenre($type)
{
	$type = strtoupper($type);
	$type = strval($type);
	$id 	= array( 'APPT' 	    => 1,
			      'BIEN' 	    => 0,
			      'GAR'      => 4,
			      'LOCOM'  => 5,
			      'MAIS'     => 3
			      );				 
							 
	if(in_array($type,$id))	return $id[$type]; return false;
}

Mais pas moyen de lui faire tester la valeur, il passe bien dans le in_array, si je test le tableau avec la valeur écrite en brut il me retourne bien la valeur, donc je comprends pas pourquoi il arrive pas à lire avec cette écriture.

Une idée ?

Posté : 03 sept. 2008, 12:07
par B.Moncef
Essayes de remplacer in_array() par array_key_exists(), ça devrait aller mieux je crois.

Posté : 03 sept. 2008, 12:25
par agité
Essayes de remplacer in_array() par array_key_exists(), ça devrait aller mieux je crois.
Oui c'était les clefs et non les valeurs qu'il fallait tester, par contre ca ne me retourne toujours false en faisant comme ca maintenant.

Posté : 03 sept. 2008, 14:54
par guilt92
Le problème doit venir de l'appel de ta fonction.

Car le code suivant fonctionne, renvoie false ou la valeur selon si le type passé existe ou pas:
echo idGenre("GAR");
<?php

echo idGenre("GAR"); //affiche 4
echo idGenre("XXX"); //affiche rien

function idGenre($type) 
{ 
    $type = strtoupper($type); 
    $type = strval($type); 
    $id     = array( 'APPT'         => 1, 
                  'BIEN'         => 0, 
                  'GAR'      => 4, 
                  'LOCOM'  => 5, 
                  'MAIS'     => 3 
                  );                  
                              
    if(array_key_exists($type,$id))    return $id[$type]; 
    return false; 
} 

?> 

Posté : 03 sept. 2008, 15:00
par agité
erf en fait j'ai trouver et voyait pas a l'affichage de la variable passé en paramètre il y avait un éspace de trop suite au split, une erreur bête.