Page 1 sur 1

[ARRAY] extraire les valeurs absente en colonne

Posté : 09 juil. 2009, 17:31
par balalalalong
Bonjour,

J'ai deux fichiers sous forme de tableau avec x lignes et y colonnes.

Je veux comparer les données de chaque ligne du tableau A en colonne 1 et afficher les données absente dans la colonne 6 du tableau B.

J'ai seulement réussi à extraire ces données mais je bloque... je ne vois pas comment les exploiter pour réussir à faire ce que je souhaite.
<?php
// valeur récupérée depuis la pahe htm en méthode POST
$code = $_POST['code'] ;

// Récupération des fichiers
$liste_A = "http://www.biloute.fr/cgi-bin/A.pl?Format=EXCEL&code=$code";
$liste_B = "http://www.biloute.fr/cgi-bin/B.pl?Format=EXCEL&code=$code";

// Affectation des fichiers dans une variable
$contenu_A= file($liste_A);
$contenu_B= file($liste_B);

// Je liste tous les elements de la colonne 1 du tableau A en ligne
for ($i=1; $i<count($contenu_A); $i++)
{
$nom_A = explode("\t",$contenu_A[$i]);
echo $nom_A[1];
}

// Je liste tous les elements de la colonne 6 du tableau B en ligne
for ($i=1; $i<count($contenu_B); $i++)
{
$nom_surv= explode("\t",$contenu_B[$i]);
echo $nom_B[6];
}

?>

Posté : 09 juil. 2009, 18:00
par micetf
Bonjour,

Il y a peut-être mieux,
mais avec les fonctions in_array() ou array_diff(),
ça me paraît réalisable.

Fred

Posté : 10 juil. 2009, 10:10
par Invité
Salut et merci pour ta réponse.

Je vois bien ce qu'il faut faire mais comment réussir à créer un nouvel array comportant les entrées des colonnes ?

Ce que je veux faire c'est :

- extraire la donnée ligne1 colonne 1 du tableau A et la comparer à la colonne 6 du tableau B
- extraire la donnée ligne2 colonne 1 du tableau A et la comparer à la colonne 6 du tableau B
- extraire la donnée ligneN colonne 1 du tableau A et la comparer à la colonne 6 du tableau B

Si la donnée est absente alors je l'affiche.

Posté : 10 juil. 2009, 10:39
par micetf
Bonjour,

Quelque chose doit m'échapper,
mais il me semble que tu as tout pour réussir ce que tu veux faire :

-> Créer un tableau correspondant à la colonne 6 de ton tableau B ()
$col_B6=array();
for ($i=1; $i<count($contenu_B); $i++) {
    $nom_surv= explode("\t",$contenu_B[$i]);
    $col_B6[] = $nom_B[6]
}
-> Pour chaque élément de la colonne 1 de ton tableau A
  • | Si pas in_array(élément, colonne 6 de B) alors afficher élément
if (!in_array($nom_A[1], $col_B6)) $echo $nom_A[1];
Fred

Posté : 10 juil. 2009, 12:12
par Invité
Ca marche impec ! C'est à moi qu'il echappait quelquechose :)

Il me manquait le $col_B6[] = $nom_B[6]; pour contruire un array avec mes données par colonne.

Voici le code qui fonctionne tres bien :
<?php 
// valeur récupérée depuis la pahe htm en méthode POST 
$code = $_POST['code'] ; 

// Récupération des fichiers 
$liste_A = "http://www.biloute.fr/cgi-bin/A.pl?Format=EXCEL&code=$code"; 
$liste_B = "http://www.biloute.fr/cgi-bin/B.pl?Format=EXCEL&code=$code"; 

// Affectation des fichiers en tableau
$contenu_A= file($liste_A); 
$contenu_B= file($liste_B); 

$col_B6=array();
for ($i=1; $i<count($contenu_B); $i++) {
        $nom_B= explode("\t",$contenu_B[$i]);
        $col_B6[] = $nom_B[6];
}

foreach ($contenu_A as $ligne_A){
$nom_A = explode("\t",$ligne_A);
        if (!in_array($nom_A[1], $col_B6)){
        echo '<pre>'.$nom_A[1].'</pre>';
        }
}

?>

Merci encore !!