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 :

Tableau multi-dimensionnel, accéder à la valeur d'une ou plusieurs clés d'un sous-tableau dont la clé x vaut z


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 78
    Par défaut Tableau multi-dimensionnel, accéder à la valeur d'une ou plusieurs clés d'un sous-tableau dont la clé x vaut z
    Bonjour à tous,

    Je mets un bout de mon tableau ça sera plus clair :
    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
     
    Array
    (
        [0] => Array
            (
                [id] => 60
                [name] => Général
                [subtitle] => 
                [parent_id] => 
                [element_type] => 1forum
                [element_order] => 1
                [left_id] => 1
                [right_id] => 2
            )
     
        [1] => Array
            (
                [id] => 59
                [name] => Matos
                [subtitle] => 
                [parent_id] => 
                [element_type] => 1forum
                [element_order] => 2
                [left_id] => 3
                [right_id] => 4
            )
     
        [2] => Array
            (
                [id] => 61
                [name] => Voyages
                [subtitle] => 
                [parent_id] => 
                [element_type] => 1forum
                [element_order] => 3
                [left_id] => 5
                [right_id] => 6
            )
     
        [3] => Array
            (
                [id] => 62
                [name] => Essais Matos
                [subtitle] => 
                [parent_id] => 
                [element_type] => 1forum
                [element_order] => 4
                [left_id] => 7
                [right_id] => 8
            )
    )
    Je veux récupérer la valeur des clés "left_id" et "right_id" du sous-tableau dont la clé "id" vaut "59" par exemple.

    En français, c'est relativement simple, mais en PHP, j'ai du mal... Sachant que je ne sais pas à l'avance dans quel sous-tableau ma clé "id" vaudra la valeur "59" bien sûr.

    Dans ma tête il faudrait d'abord trouver le sous-tableau dont la clé "id" vaut "59", puis extraire de ce sous-tableau les valeurs des clés "left_id" et "right_id".

    Merci pour le coup de pouce si quelqu'un peut me décoincer

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Il n'y a rien de sorcier, tu fais une boucle foreach sur les éléments de ton tableau principal (éléments qui sont donc tes sous-tableaux) et dans cette boucle tu vérifies la valeur de la clef id. Lorsque c'est la bonne, tu récupères les valeurs des clefs left_id et right_id et tu interromps la boucle avec break.
    Essaies déjà de faire ça, ensuite on verra éventuellement des méthodes plus sophistiquées de le faire (voire plus efficaces si tu dois le faire souvent).

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 78
    Par défaut
    c'est à peu près ce que j'ai fait : en sachant que 'parent_id' est la valeur de clé qui m'intéresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $k=0;
    foreach($import_values as $line){
      foreach($line as $key=>$value){
        if($key=='id'){
          if($value==$parent_id){
            $parent_left_id = $import_values[$k][6];
          }
        }
      }
      $k++;
    }
    Par contre je n'ai pas mis de break, et j'ai mis un $k pour "noter" le numéro de ligne et avoir mon premier élément de pointage de matrice, pour le 2ème c'est simple la clé dont je veux la valeur est en 6ème position.

    Par contre je n'en suis pas encore arrivé là au niveau exécution (j'ai des bugs plus haut) donc j'avance pas à pas et j'ai hâte d'arriver à ce point pour voir si j'ai bien réfléchi à mon système.

    Merci pour ton retour qui colle à l'idée que je me suis faite de la façon de faire

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Ton foreach imbriqué ne sert à rien, tu sais que tu recherches la valeur correspondant à la clef id donc il suffit de tester $line['id'].

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 78
    Par défaut
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach($import_values as $line){
      if($line['id']==$parent_id){
        $parent_left_id = $line['left_id'];
      }
    }

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Oui tout simplement. Tu n'as plus qu'à ajouter un break pour quitter la boucle lorsque tu as trouvé.

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

Discussions similaires

  1. Accéder à la valeur d'une cellule d'une grid
    Par MadMax4 dans le forum Ext JS / Sencha
    Réponses: 3
    Dernier message: 28/04/2010, 10h54
  2. Accéder à la valeur d'une Map
    Par manu f dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 16/03/2010, 13h53
  3. Accéder à la valeur d'une cellule d'un autre fichier excel depuis VBA
    Par guillaume7501 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/09/2008, 20h38
  4. Accéder à des valeurs d'une popup "fille" à partir du parent
    Par bobic dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/07/2007, 17h36
  5. [VB.Net][Excel]Accéder à la valeur d'une cellule
    Par DonF dans le forum Windows Forms
    Réponses: 6
    Dernier message: 21/09/2006, 11h09

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