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 :

[Tableaux] Joindre deux tableaux PHP comme une jointure SQL


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut [Tableaux] Joindre deux tableaux PHP comme une jointure SQL
    Bonjour,
    je suis en train d'essayer de joindre deux tableaux PHP comme le ferais une requète SQL avec un LEFT JOIN, un petit exemple sera plus concret :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    $table1 = array(
    	0 => array(
    		'id' => 1,
    		'text' => 'bidule',
    	),
    	1 => array(
    		'id' => 1,
    		'text' => 'second bidule',
    	),
    	2 => array(
    		'id' => 4,
    		'text' => 'troisième bidule',
    	),
    );
     
    $table2 = array(
    	0 => array(
    		'u_id' => 1,
    		'name' => 'genova',
    	),
    	1 => array(
    		'u_id' => 4,
    		'name' => 'flash',
    	),
    );
     
    /*
    ** SELECT table1.id, table1.bidule, table2.u_id, table2.name FROM table2 LEFT JOIN table1 ON table2.u_id = table1.id
    **
    ** devrait retourner un tableau comme ceci :
    */
    $result = array(
    	0 => array(
    		'id' => 1,
    		'text' => 'bidule',
    		'u_id' => 1,
    		'name' => 'genova',
    	),
    	1 => array(
    		'id' => 1,
    		'text' => 'second bidule',
    		'u_id' => 1,
    		'name' => 'genova',
    	),
    	2 => array(
    		'id' => 4,
    		'text' => 'troisieme bidule',
    		'u_id' => 4,
    		'name' => 'flash',
    	),
    );
    Auriez vous des idées d'algo pour y parvenir ? Je suis en train d'expérimenter un truc à base de foreach () dans tous les sens et imbriqués mais c'est trèsp eu optimisé
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 65
    Points
    65
    Par défaut
    Source php.net

    "array_intersect() retourne un tableau contenant toutes les valeurs de array1 qui sont présentes dans tous les autres arguments array2, ..., etc"

    Ce ne serait pas cette fonction qu'il te fallait ?
    http://fr.php.net/manual/fr/function.array-intersect.php
    L'eternité c'est long, surtout vers la fin

  3. #3
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Salut, merci pour ta réponse, mais ta fonction n'agit malheuresement pas comme on le souhaite (on ne peux pas lui spécifier de condition sur les clefs), de plus elle agit comme un INNER JOIN de base alors que je tente de reproduire un LEFT JOIN
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  4. #4
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    voila ce que j'ai :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    $tab_finale = array();
     
    $table1 = array(
       0 => array(
          'id' => 1,
          'text' => 'bidule',
       ),
       1 => array(
          'id' => 1,
          'text' => 'second bidule',
       ),
       2 => array(
          'id' => 4,
          'text' => 'troisième bidule',
       ),
    );
     
    $table2 = array(
       0 => array(
          'u_id' => 1,
          'name' => 'genova',
       ),
       1 => array(
          'u_id' => 4,
          'name' => 'flash',
       ),
    ); 
     
    foreach ($table1 As $arT1) {
       foreach ($table2 As $arT2) {
          if($arT1['id'] === $arT2['u_id']) array_push($tab_finale, array_merge($arT1, $arT2));
       } 
    }
    echo "<pre>";
    print_r($tab_finale);
    echo "</pre>";

  5. #5
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Ouaip actuellement c'est ce que j'ai fais, seulement immagine sur dexu tableaux de 500 entrés chacun ca fait pas mal de boucles quand même ^^

    Ah moins que je gère ca avec un système d'index
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/04/2007, 19h45
  2. [SQL] problème de variable tableau PHP contenant les données d'une jointure SQL
    Par Schpountz42 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/02/2007, 05h59
  3. [Tableaux] Fusionner deux tableaux
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 09/11/2006, 13h42
  4. Réponses: 13
    Dernier message: 13/10/2006, 00h15
  5. [VBA-E]:copier entre deux tableaux sur deux classeurs
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 39
    Dernier message: 28/06/2006, 15h39

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