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] Utilisation de array intersect


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut [Tableaux] Utilisation de array intersect
    Bonjour,
    Je précise que je suis débutant,mes questions pourraient paraître simples, mais malgré leur simplicité , j'ai besoin de votre aide.
    Bon, mon problème est le suivant:
    je recupére à partir d'une requete sql(mysql) un tableau data1:[IMG][/IMG]
    à partir d'une deuxième requete sql data2:

    Je voudrais effectuer une intersection des deux tableaux pour me donner un tableau reprenant uniquement les lignes présentes dans les deux.
    J'ai voulu utiliser array_intersect mais le résultat n'est pas concluant.
    Le résultat voulu doit contenir des lignes où la colonne "désactivé" a toutes les cases cochées par exemple.

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    au niveau de tes tableaux, comment se présente-t-il?

    peut tu effectuer cette commande et nous afficher le résultat

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "<pre>";
    var_dump($tontableau_1, $ton_tableau2);
    echo "</pre>";
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Mon la manipulation donne ça:
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    array(3) { //Premier tableau
      [0]=>
      array(4) {
        ["course"]=>
        string(3) "AS1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-04-08 13:13:32"
        ["expirationDate"]=>
        NULL
      }
      [1]=>
      array(4) {
        ["course"]=>
        string(2) "I1"
        ["disable"]=>
        string(7) "Enabled"
        ["creationDate"]=>
        string(19) "2008-04-09 15:47:59"
        ["expirationDate"]=>
        NULL
      }
      [2]=>
      array(4) {
        ["course"]=>
        string(4) "AG12"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-21 14:59:33"
        ["expirationDate"]=>
        NULL
      }
    }
    array(9) {//Deuxième tableau
      [0]=>
      array(4) {
        ["course"]=>
        string(2) "E1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-19 12:43:50"
        ["expirationDate"]=>
        NULL
      }
      [1]=>
      array(4) {
        ["course"]=>
        string(2) "A1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-19 12:44:24"
        ["expirationDate"]=>
        NULL
      }
      [2]=>
      array(4) {
        ["course"]=>
        string(2) "P1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-19 12:45:05"
        ["expirationDate"]=>
        NULL
      }
      [3]=>
      array(4) {
        ["course"]=>
        string(2) "F1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-19 12:45:38"
        ["expirationDate"]=>
        NULL
      }
      [4]=>
      array(4) {
        ["course"]=>
        string(2) "H1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-19 12:46:14"
        ["expirationDate"]=>
        NULL
      }
      [5]=>
      array(4) {
        ["course"]=>
        string(2) "G1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-19 12:46:43"
        ["expirationDate"]=>
        NULL
      }
      [6]=>
      array(4) {
        ["course"]=>
        string(2) "M1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-19 12:47:23"
        ["expirationDate"]=>
        NULL
      }
      [7]=>
      array(4) {
        ["course"]=>
        string(4) "AG12"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-03-21 14:59:33"
        ["expirationDate"]=>
        NULL
      }
      [8]=>
      array(4) {
        ["course"]=>
        string(3) "AS1"
        ["disable"]=>
        string(0) ""
        ["creationDate"]=>
        string(19) "2008-04-08 13:13:32"
        ["expirationDate"]=>
        NULL
      }
    }
    Je viens de constater qu'en fait il fait qu'une intersection des tables à base des clés primaires,
    Je précise que j'utilise la fonction array_intersect_assoc().

  4. #4
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    en faisant peut-être ceci :

    Code php : 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
     
    foreach($tab_1 as $ligne)
    {
    $serial[] = serialize($ligne);
    }
     
    foreach($tab_2 as $ligne)
    {
    $serial_2[] = serialize($ligne);
    }
     
    $serial_3 = array_intersect($serial,$serial_2);
     
    foreach($serial_3 as &$result)
    {
    $result = unserialize($result);
    }
     
    echo "<pre>";
    var_dump($serial_3);
    echo "</pre>";

    est-ce que $serial_3 contient bien ce que tu cherche à obtenir?

    PS : dans ce code tu n'as besoin que de renommer $tab_1 et $tab_2
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Idée
    Je me demandais s'il y avait pas un équivalent qui me permet de faire un intersect en me basant uniquement sur un colonne, (Dans mon cas il se base sur les clés et ca me donne pas ce que je veux). Je voudrais faire un intersect sur le code du cours.

  6. #6
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    la solution que je t'ai apporté vérifie si une chaîne est strictement identique à une autre!

    ma solution te retournera les cours suivant :

    H1
    M1
    E1
    G1
    P1
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Marche pas.
    Je viens d'essayer ta solution, il me retourne un tableau vide.
    $result est vide.

  8. #8
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    le tableau final est $serial_3, pas $result

    et le & n'est pas une faute de frappe ! il est nécéssaire
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  9. #9
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Résolu( je crois)?
    Merci, entre temps, j'en suis venu à une solution,

    mes deux tableaux sont: $data et $ datatest;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    foreach( $datatest as $check )		
    			{
     
    			foreach($data as $dtest)
    			{
        			if($dtest['course'] == $check['course'])
        			{
        			$result[]=$dtest;      			
        			}    		   
    			}
    			}
    		$data=$result;
    jusque là ca me donne le résultat voulu, dis moi ce que t'en penses.

  10. #10
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    ma solution est disons propre mais si ça marche c'est l'essentiel
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  11. #11
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Arigato
    Encore merci du coup de main, ta solution passe aussi, j'attend mon supérviseur de stage pour faire le point.
    Merci encore et bonne journée.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut intersection de deux tableau avec ré-initialisation des Clés
    Bonjour
    Votre solution qui utilise les serialize m'as servi SAUF que j'ai besoin d'un moyen pour ré-initilaiser les clés du tableau résultant... Jusqu'au là ton programme préserve toujours les clés initiale...Merci d'avance pour votr aide.

  13. #13
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    à la fin du code tu peux toujours faire :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $tableau_final = array();
    foreach($serial_3 as $ligne):
    $array_push($tableau_final,$ligne);
    endforeach;
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

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

Discussions similaires

  1. [Tableaux] array intersect php
    Par lafracas dans le forum Langage
    Réponses: 1
    Dernier message: 09/06/2006, 21h21
  2. Réponses: 2
    Dernier message: 09/02/2006, 19h06
  3. [Tableaux] Gérer une array...
    Par kult dans le forum Langage
    Réponses: 7
    Dernier message: 16/11/2005, 17h03
  4. Comment utiliser un array of TImage ?
    Par poussinphp dans le forum Langage
    Réponses: 23
    Dernier message: 19/09/2005, 09h24
  5. Utilisation des Array en javascript serveur
    Par clisson dans le forum XMLRAD
    Réponses: 4
    Dernier message: 13/06/2005, 15h46

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