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 :

Extraction dans un tableau multidimensionnel


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 109
    Par défaut Extraction dans un tableau multidimensionnel
    Bonjour à tous,
    J'ai un tableau sous cette forme :

    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
     
        [JACQUES] => Array
            (
                [1355266800] => Array
                    (
                        [CODE22] => CODE22
                    )
     
                [1379023200] => Array
                    (
                        [CODE11] => CODE11
                    )
     
                [1381615200] => Array
                    (
                        [CODE85] => CODE85
                    )
     
            )
     
        [PIERRE] => Array
            (
                [1379023200] => Array
                    (
                        [CODE64] => CODE64
                    )
     
            )
    Je l'ai trier par timestamp pour avoir le plus ancien en premier dans la liste et je souhaite récupérer la valeur final selon le prénom et le timestamp (par exemple CODE22 pour Jacques et CODE64 pour PIERRE).

    Je compare ce tableau (tableau 1), avec un autre tableau (tableau 2) en comparant (array_key_exist) le prénom, si le prénom du tableau 1 existe dans le tableau 2, alors j'affiche la première valeur (CODE22) avec le tableau 2.

    J'ai tenter avec array_slice, mais j'ai eu des résultats étranges, et surtout, pas ce que j'attendais, est-ce la bonne méthode ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_slice($tableau1,1,1,TRUE)
    merci



    J'ai peut-être trouvé la solution à mopn problème, je vérifie et vous tiens informé, merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($tableau2 as $prenom) {
       if (isset($tableau1[$prenom])) {
             $last_timestamp = end($tableau1[$prenom]);
             echo $prenom . end($tableau1[$prenom][$last_timestamp]) . '<br/>';
       }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 109
    Par défaut
    Bonjour et merci pour votre réponse, j'ai procédé autrement pour avoir le résultat que j'avais besoin :

    par l'intermédiaire d'un while list each, puis, d'un array_slice, donc maintenant, j'ai un tableau de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     [JACQUES] => Array
            (
                [1355266800] =>  CODE22
            )
     
               [PIERRE] => Array
            (
                [1379023200] =>  CODE64
            )
    Pour reprendre mon précédent exemple, je souhaite comparer le prénom au prénom de mon autre tableau et insérer à côté de celui-ci (dans l'autre tableau), le code correspondant au prénom (code du tableau 1).

    ce que je fais, dans mon autre tableau, j'ai déjà une boucle qui tourne et qui assigne des variables aux différente colonne (assign_block_vars) où $t[3] = le prénom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach ($tab2 as $t){
      	if (array_key_exists($t[3],$tab1)){
    		$l['PRENOM']=$tab1[$t[3]];
    	}
            $template->assign_block_vars('tab',$t);
    }
    et ça ne fonctionne pas, en résultat, j'ai "Array", au lieu de ma valeur, pour moi c'est un peu flou, ça sera surement plus évident pour vous.

    merci de votre aide.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton "$tab1[$t[3]]" c'est le tableau "[1355266800] => CODE22".

    Je t'ai déjà fourni une solution sans avoir besoin de retoucher ton tableau source.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 109
    Par défaut
    Bonsoir
    J'ai essayé d'adapter ta solution à mes besoins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach($tab2 as $t){
    	$l['prenom']=$t[3];
    	 if (isset($tab_tri_date[$t[3]])) {
                  $last_timestamp = end($tab1[$t[3]]);
    	      $l['CODE']=end($tab1[$t[3]][$last_timestamp]);
            }
    	$template->assign_block_vars('LISTE',$t);
    }
    Dans ce cas là, ça ne m'affiche aucun résultat, je m'y prend mal.
    Quand je fais un print_r de $last_timestamp, je n'ai rien non plus.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourquoi tu changes complétement mon code ?
    Qu'est ce qui ne te convient pas dedans ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. suppression d'une ligne dans un tableau multidimensionnel
    Par ekinox62100 dans le forum Langage
    Réponses: 4
    Dernier message: 06/10/2010, 10h00
  2. [PHP 5.2] utilisation de la fonction in_array dans un tableau multidimensionnel
    Par megaloplex dans le forum Langage
    Réponses: 1
    Dernier message: 23/08/2010, 13h59
  3. Supprimer les doublons dans un tableau multidimensionnel
    Par karim19 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/04/2010, 17h39
  4. Réponses: 3
    Dernier message: 06/12/2009, 15h02
  5. Réponses: 2
    Dernier message: 04/11/2007, 08h43

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