[PHP] Comment garder l'ordre des clé dans un tableau ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [PHP] Comment garder l'ordre des clé dans un tableau ?

Re: [PHP] Comment garder l'ordre des clé dans un tableau ?

par Invité » 25 oct. 2010, 15:10

J'ai trouvé, chui nulle...

echo '<table border="0">';
foreach ($anomalie as $key => $val)
{
echo '<tr><td>'.$anomalie[$key].'</td>';
echo '<td>'.$COL0[$key].'</td></tr>';
}
echo '</table>';

Re: [PHP] Comment garder l'ordre des clé dans un tableau ?

par Fanny » 25 oct. 2010, 14:49

Yes ! Merci à vous, il faut croire que c'était trop facile comme question :lol:

Sinon, je rencontre pour le coup un probleme sur l'affiche des valeurs.

Dans la boucle for j'utilise une notion incrementale ($n) qui ne correspond pas puisque si j'ai par exemple 10 occurence en anomalie mais que l'une vaut $anomalie[45] ça ne fonctionne pas.

Comment faire pour afficher dans un tableau html (avec balises) le résultat de $anomalie ? En fait il s'agit là de mettre en forme un print_r($anomalie);
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>';
}

Re: [PHP] Comment garder l'ordre des clé dans un tableau ?

par moogli » 25 oct. 2010, 13:12

salut,
j'ai vraiment compris ton explication mais si j'ai un minimum suivis, utilise foreach pour avoir la clef du tableau et l'utiliser dans ta création de tableau
foreach ($array_final as $key => $valeur){
           if ( (!in_array($valeur, $agent)) )
           {
           $anomalie[$key] = $valeur;
           }
        }
@+

Re: [PHP] Comment garder l'ordre des clé dans un tableau ?

par xTG » 25 oct. 2010, 13:11

Je répond vite fait mais j'ai pas analysé le début du code.
Donc je poste ce qui me semble être en rapport avec ta question :
foreach ($array_final as $cle => $valeur)
        {
           if ( (!in_array($valeur, $agent)) )
           {
           $anomalie[$cle] = $valeur;
           }
        }
De cette manière tu gardes les valeurs aux bons index.

[PHP] Comment garder l'ordre des clé dans un tableau ?

par Fanny » 25 oct. 2010, 12:55

Bonjour à tous,

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>';
}

?>