IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Rechercher une valeur et retrouver sa clé depuis un tableau multidimentionnel


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Rechercher une valeur et retrouver sa clé depuis un tableau multidimentionnel
    Bonjour,

    J'ai un array nommé "$dataUsersSansDoublons" qui contient ceci :

    ...
    [5] => Array
    (
    [0] => 5
    [1] => STEPHANE.TOTO
    [2] =>
    [3] => 2a10971597a4cd2b93a234cd723053f0
    [4] => stephane.titi@toto.com
    [5] => 2124
    [6] => NULL
    [7] => TOTO
    [8] => Stephane
    [9] => 125
    [10] => 0
    [11] => fr_FR
    [12] => 20
    [13] => 1
    [14] => Numéro de matricule : 0000011
    [15] => -1
    [16] => 1
    [17] => 0000-00-00 00:00:00
    [18] => 0000-00-00 00:00:00
    [19] => 0
    [20] => 0
    [21] => 0
    [22] => 5
    [23] => 5
    [24] => 1
    [25] => 1
    [26] => 1
    [27] => 0
    )

    [6] => Array
    (
    [0] => 6
    [1] => JORDI.TITI
    [2] =>
    [3] => d18d67c8f2085515bb1751192c34cb8b
    [4] => jordi.titi@toto.com
    [5] => 4797
    [6] => NULL
    [7] => TITI
    [8] => Jordi
    [9] => 125
    [10] => 0
    [11] => fr_FR
    [12] => 20
    [13] => 1
    [14] => Numéro de matricule : 0000018
    [15] => -1
    [16] => 1
    [17] => 0000-00-00 00:00:00
    [18] => 0000-00-00 00:00:00
    [19] => 0
    [20] => 0
    [21] => 0
    [22] => 6
    [23] => 6
    [24] => 1
    [25] => 1
    [26] => 1
    [27] => 0
    )
    ...
    J'aimerai recherché dans cet array si "JORDI.TITI" est une valeur existante.

    J'ai donc fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(array_search('JORDI.TITI',$dataUsersSansDoublons))
    {
        echo 'OUI<br>';
    }
    else
    {
        echo 'NON<br>';
    }
    Mais cela ne fonctionne pas. Je pense que le problème vient du faire que je suis dans un tableau à deux dimensions.

    Dans ce cas, comment faire pour recherché un élément sur une colonne donné ?

    Merci d'avance

    Arnaud

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array_key_exists()

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Non, cela ne fonctionne pas. Cette fonction peux rechercher dans un tableau mais pas un tableau composé de tableau.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $os = array("Mac", "NT", "Irix", "Linux");
    if (in_array("Irix", $os)) {
       echo "Got Irix";
    }
    if (in_array("mac", $os)) {
       echo "Got mac";
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $a = array(array('p', 'h'), array('p', 'r'), 'o');
    
    if (in_array(array('p', 'h'), $a)) {
        echo "'ph' a été trouvé\n";
    }
    

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    oui j'ai déjà tester ceci.

    mon tableau est formé à partir d'un fichier CSV que j'explore.
    Je mets chaque lignes dans un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ($ligne = fgetcsv($fp, $this->taille, $this->delimiteur)) 
    {
    	if(!empty($ligne[0]) && !empty($ligne[1]))
    	{
                    // Insertion des uers+profils du fichier CSV
    		// Définie les séparateur de nom afin d'avoir un login homogène, sans espaces ou "-"
    		$separateurs = array('-',' ');
    		$dataUsers[] = array($id, strtoupper(str_replace($separateurs,'.',$ligne[1]).'.'.str_replace($separateurs,'.',$ligne[0])),'',md5($ligne[0]),$ligne[12],$ligne[13],'NULL',$ligne[0],$ligne[1],125,0,'fr_FR',20, 1, 'Numéro de matricule : '.$ligne[2], -1, 1,'0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 0, 0,$id, $id, 1, 1, 1, 0);
                    $id++;
           }
    }
    Ensuite, j'ai des données dans un table de base de donnée.

    J'aimerai insérer ces données dans mon tableau "dataUsers" mais :

    Avant d'exporter un utilisateur présent dans ma base de données dans mon tableau je dois vérifier s'il n'existe pas.
    Si il n'existe pas, j'insère l'utilisateur de la base de données dans mon tableau.

    Si il existe dans le tableau, je dois retrouver la clef du tableau pour ensuite mettre à jour la ligne du tableau qui correspond à mon utilisateur dans ma base de donnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $reponse = mysql_query('SELECT name
    			 FROM ' . $this->tableMySQL1 . '
    			 LEFT JOIN glpi_users_profiles ON ( glpi_users.ID = glpi_users_profiles.FK_users )
    			 ORDER BY `glpi_users`.`realname` ASC');
     
    while ($donnees = mysql_fetch_array($reponse))
    {
    	if(array_search($donnees['name'],$dataUsersSansDoublons))
    	{
    		echo $donnees['name'].' : OUI<br>';
    	}
    	else
    	{
    		echo $donnees['name'].' : NON<br>';
    	}
    Je ne sais pas si mon explication est clair, car n'est pas simple à expliquer par écrit...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $tab = array(2003, "12.5");
    if(in_array(2003, $tab) && in_array(12.5, $tab)) {
        echo "Trouvé !";
    }
    Il faut que je mette un "in_array(2003, $tab)" autant de fois que les colonnes de mon tableau pour le testé ?

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Mon soucie est que mon tableau ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $tab = array();
    $tab[] = array(2003, "12.5",5);
    $tab[] = array(2045, "toto",54);
    if(in_array(5, $tab)) 
    {
        echo "Trouvé !";
    }
    et la fonction in_array ne fonctionne pas dans un tableau de tableau...

    merci encore pour ton aide

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    J'ai trouvé la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $map = array();
    $map[] = array('Jordan','PETIT');
    $map[] = array('TOTO','GRAND');
     
    $search_value = "GRAND";
     
    foreach ($map as $key => $row)
    {
    	foreach($row as $cell)
    	{
    		if ($cell == $search_value)
    		{
    			print $key;
    		}
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  2. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  3. expresson reguliere recherche une valeur non presente
    Par mikebranque dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/05/2007, 16h13
  4. Rechercher une valeur dans un tableau
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 14h23
  5. Réponses: 7
    Dernier message: 26/10/2004, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo