Je rencontre un probleme sur un petit script php.
Dans mon exemple, $COL0[0] n'existe pas ce qui est normal puisqu'il correspond à la ligne d'entete que j'ai supprimé (unset). Ce que je souhaite, c'est que $anomalie[1] soit égal à $array_final[1]
Je veux conserver les clés.
Comment faire ? S'il existe une façon de faire cela de maniere plus optimisé, je suis preneuse.
Merci.
Stef.
Voici le script :
<?
// url a tester
$url = 'http://www.test.com/fichier.csv';
$titre = 'prenom'; // titre de la colonne a tester
$ligne = 0; // init variable
$handle = @fopen($url, 'r'); // ouvre l url en lecture seule (r)
if($handle) // test si l url est valide
{
while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE)
{
$tot_colonne = count($data);
for($colonne=0;$colonne<$tot_colonne;$colonne++)
{
${"COL$colonne"}[] = $data[$colonne];
if($ligne == 0 && ${"COL$colonne"}[0] == $titre ) { $colonne_titre = $colonne; }
unset(${"COL$colonne"}[0]); // suppression des titres de colonne dans le tableau
}
$ligne++;
}
fclose($handle); // fermeture du fichier
$array_final = ${"COL$colonne_titre"}; // extraction des donnees de la colonne selectionnee
$agent = array('DUPONT', 'DURAND'); // tableau des donnees valide
// test de presence de donnee non valide
// je veux que $anomalie conseve les clé de $array_final
foreach ($array_final as $valeur)
{
if ( (!in_array($valeur, $agent)) )
{
$anomalie[] = $valeur;
}
}
} // fin du test de l url
if( isset($anomalie))
{
echo '<pre>';
echo '.count($anomalie).' / '.count($array_final).' ';
echo '</pre>';
echo '<table border="0">';
for($n=0;$n<sizeof($anomalie);$n++){
echo '<tr><td>'.$anomalie[$n].'</td>';
echo '<td>'.$COL0[$n].'</td></tr>';
}
echo '</table>';
}
else
{
$date = date("d/m/Y");
$heure = date("H:i");
echo '<pre>';
echo 'OK '.$date.' '.$heure.'</pre>';
echo '</pre>';
}
?>