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 associatifs : tableau dans tableau.


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2019
    Messages : 51
    Points : 39
    Points
    39
    Par défaut Tableaux associatifs : tableau dans tableau.
    Bonjour à tous,

    en fait, j'ai l'intention d'utiliser les tableaux associatifs. Au niveau de mon tableau, je compte utiliser 2 informations au niveau de ma clé. Pour cela, je me demandais si c'était une bonne idée de mettre un autre tableau associatif de la clé de ce premier tableau associatif ? Je pense que ça ne doit pas être la meilleure solution car ça peut devenir ingérable.

    Voici une partie de mon code pour vous montrer ce que je compte faire :

    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
    $arrActionsByUser = array();
    $arrActionsByUserWithIndex = array();
     
    foreach ($items as $key => $value)
    {
      if (in_array($value['ACTION_TITLE'], array_keys($arrActionsByUser)))
      {                             
        $arrActionsByUserWithIndex[$value['ACTION_DESCRIPTION']] += $value['INDEX'];
      }
      else
      {
        $arrActionsByUserWithIndex[$value['ACTION_DESCRIPTION']] = $value['INDEX'];
      }
     
      $arrActionsByUser[$value['ACTION_TITLE']] = $arrActonsByUserWithIndex[$value['ACTION_DESCRIPTION']];
    }
    N'y a-t-il pas un moyen plus simple que de mettre un tableau associatif dans un autre ? Utilisation de listes, de classes, ... ?

    En fait, je me demande également comment je peux faire pour accéder à la clé de mon tableau associatif qui s'appelle : $arrActionsByUserWithIndex. J'arrive bien à accéder à la valeur de ce tableau mais pas à sa clé. J'aimerais bien pour accéder à sa clé notamment via un foreach :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($arrActionsByUser as $actionsByUserKey => $actionsByUserValue)
    {
      echo "key {" . $actionsByUserKey . "} value {" . $actionsByUserValue . "}<br/>";
    }
    Donc, plutôt que d'utiliser un tableau associatif comme valeur de mon 1er tableau associatif, il faudrait peut-être que j'utilise un autre type de données comme une classe ou autre chose ?

    En fait, quand j'ai construit mon tableau associatif, j'aimerais bien accéder à la clé de mon 1er tableau associatif et à la clé ainsi qu'à la valeur de mon 2ème tableau associatif.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($arrActionsByUser as $actionsByUserKey => $actionsByUserValue)
    {
      if ($actionsByUserValue > 0)
      {
         <a href="article.php?action=<?= $actionsByUserKey; ?>"><?= $actionsByUserValue; ?></a>
      }
    }
    Dans le lien, à la place d'afficher $actionsByUserValue, j'aurais bien aimé afficher la clé de cet élément-là c'est-à-dire la clé de ma second tableau associatif.

    N'y a-t-il pas moyen d'accéder à la key/value au niveau du foreach sur le 1er tableau associatif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($arrActionsByUser as $actionsByUserKey => $actionsByUserValue)
    {
      echo "key {" . $permissionsByUserKey . "} value {" . $permissionsByUserValue . "}<br/>";
    }
    Avoir un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($arrActionsByUser as $actionsByUserKey => key_2nd_array, value_2nd_array)
    Merci d'avance

    Bonne journée
    Thierry

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Houlà, m'est d'avis que tu devrais plutôt nous décrire ce que tu comptes faire parce que je pense que tu pars dans une usine à gaz

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2019
    Messages : 51
    Points : 39
    Points
    39
    Par défaut
    Bonjour rawsrc,

    tout d'abord, merci de réagir à mon message.

    En fait, je compte créer un tableau associatif. Le but serait d'avoir plusieurs champs dans la partie valeur du tableau associatif. Donc, j'aurais quelque chose de ce genre-là :

    key : 50
    value : 'titre de l'article', 'nombre de vues'

    Donc, dans ce cas-ci, je voulais créer un tableau associatif à deux dimension. Mais, je pense que je ferais mieux de passer par une autre solution.

    Par après, j'ai besoin de ces 3 valeurs pour la suite de mon traitement. Je besoin de la clé de mon 1er tableau associatif ainsi que de la clé et de la valeur du second tableau associatif qui correspond à la valeur de la clé de mon 1er tableau associatif.

    Le souci, c'est que la valeur correspondant à la clé de mon 1er tableau associatif est une chaîne de caractères plutôt qu'un tableau quand j'écris ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $arrActionsByUser[$value['ACTION_TITLE']] = $arrActonsByUserWithIndex[$value['ACTION_DESCRIPTION']];
    Donc, j'aimerais bien que la valeur de la clé de mon 1er tableau associatif fasse référence à mon second tableau associatif.

    J'ai également essayé le code suivant mais j'ai tout mon second tableau associatif dans la valeur de la clé de mon 1er tableau associatif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $arrPermissionsByUser[$value['PERM_TITLE']] = $arrPermissionsByUserWithIndex;
    Merci d'avance

    Bonne journée
    Thierry

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ça ne ferait pas l'affaire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $data = [
        50 => [
            "titre de l'article" => 'un super titre',
            "nombre de vues"     => 1489
        ]
    ];

  5. #5
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bonjour Thierry,

    Es-tu bien sûr que tes problématiques ne relèvent pas plutôt du SQL et d'une bonne modélisation ?

    tu as manifestement besoin d'une

    table article(id, titre, contenu)
    table action(id, nom, description)
    table user(id, permission, nom)
    table permission(id, categorie)
    ???

    Et après tu dois faire "dialoguer" entrer en relation ces différents concepts ?

    Donc je te redis comme Rawsrc, que veux-tu faire dans la vraie vie, avec des vrais exemples ?
    J'imagine que tu ne veux pas "faire un tableau associatif" pour "faire un tableau associatif"...

    Tu veux ranger quoi ? et comment ? Quelques exemples pratiques valent mieux qu'un long discours.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2019
    Messages : 51
    Points : 39
    Points
    39
    Par défaut
    Bonjour à vous,

    tout d'abord, je tenais à vous remercier pour votre aide.

    En fait, j'aimerais bien remplir dynamiquement un tableau comme rawsrc a donné un exemple :

    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
     
    $data = [
        50 => [
            "titre de l'article" => 'un super titre',
            "nombre de vues"     => 1489
        ],
        60 => [
            "titre de l'article" => 'un autre super titre',
            "nombre de vues"     => 289
        ],
        89 => [
            "titre de l'article" => 'encore un super titre',
            "nombre de vues"     => 335
        ]
    ];
    Donc, je parcours tous mes articles et je crée dynamiquement ce genre de tables.

    Le 50, 60 et 89 serait la clé du tableau.
    Le titre de l'article et le nombre de vues seraient la valeur de la clé du tableau.

    En fait, ma question est de savoir quelle technique je dois utiliser pour faire ce genre de choses.

    Dois-je créer un tableau associatif multi-dimensionnels ou y a-t-il un autre moyen pour avoir plusieurs champs dans la partie valeur de la clé du tableau ?

    Merci d'avance

    Bonne journée
    Thierry

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    les données doivent être extraites d'une base de données, non ?
    si oui montre le code, stp

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je commence à te connaître...

    Mon conseil : arrête de te poser trop de questions, théoriques.
    La meilleure méthode pour apprendre est de pratiquer !

    On apprend beaucoup de ses propres erreurs.
    Il faut l'accepter pour progresser.

    Crois-moi : j'ai construis de nombreuses usines à gaz, avant d'être capable d'optimiser mon code.

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Juste pour répondre à cette question :
    Citation Envoyé par thirt Voir le message
    Dois-je créer un tableau associatif multi-dimensionnels ou y a-t-il un autre moyen pour avoir plusieurs champs dans la partie valeur de la clé du tableau ?
    Tu pourrais éventuellement créer une classe qui représente ta valeur et implémenter cette classe pour chaque cas.

    Par exemple :
    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
    class InformationArticle {
        // propriétés
        private $_titre;
        private $_auteur;
        private $_nbVues;
     
        // constructeur
        public __construct($titre, $auteur) {
            $this->_titre = $titre;
            $this->_auteur = $auteur;
        }
     
        // accesseurs
        public getTitre() { return $this->_titre;}
     
        public getAuteur() { return $this->_auteur;}
     
        public getNbVues() { return $this->_nbVues;}
     
        public setNbVues($nbVues) { $this->_nbVues = $nbVues }
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [Bash] Tableaux associatifs : variables dans le nom et la clé
    Par zilbou dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/06/2016, 19h52
  2. Réponses: 3
    Dernier message: 04/08/2006, 19h24
  3. [Tableaux] probleme unserialize dans un tableau(list)
    Par urikawa dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2006, 11h29
  4. [Tableaux] Paramètre tableau associatif
    Par XtofRoland dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2006, 18h45
  5. [Tableaux] supression valeur dans tableau
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2006, 21h25

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