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 sous tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut Extraction sous tableau
    Bonjour,

    Je bute sur une extraction de sous-tableau.
    J'ai un tableau avec x sous-tableaux (aussi bien en direct qu'en profondeur, comme une arborescence au final).
    Le tableau est de la forme (je vous épargne les paramètres) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $t[0]=array();
    $t[0]['id']='macle1';
    $t[0]['enfants']=array();
    $t[0]['enfants'][0]['id']='macle2';
    ...
    J'ai donc fait une boucle récursive où je cherche à retourner, dans le cas ci-dessus, le sous-tableau associatif ['id']='macle2' :
    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
      function getSubTab(&$_t,$_champ,$_id,$_tRes=array())
      {
        foreach($_t as $cle => $val)
        {
          if(is_array($val))
    	getSubTab($val,$_champ,$_id,$_tRes);
          else
          {
    	if(strcmp($cle,$_champ) && strcmp($val,$_id))
    	{
    	  $_tRes=$_t;
    	  break;
    	}
          }
        }
        return $_tRes;
      }
    A priori, ce code fonctionne (au niveau du break, j'écris dans un fichier et j'ai bien mon tableau), mais lorsque je fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $t=getSubTab($monTab,'id','macle2');
    je n'ai plus rien, ce qui me laisse .

    Merci par avance

  2. #2
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Points : 354
    Points
    354
    Par défaut
    Sympa ce genre de structures de données...
    Je vois pas trop comment fonctionne ton code (algorithme).

    Mais certains points sont bizarres.
    Ton appel récursif pour commencer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getSubTab($val,$_champ,$_id,$_tRes);
    Ta fonction retourne un tableau (avec le return à la fin), mais on ne récupère pas ce retour dans ton appel récursif. On pourrait croire que ta fonction modifie le dernier paramètre $_tRes, mais en fait non, car celui est passé par copie (faudrait ajouter le '&' devant).

    Ensuite les strcmp, pas tout compris : tu fais deux comparaisons en testant la différence, alors qu'on s'attendrait plutôt à ce que tu testes l'égalité, justement pour retrouver le bon chemin dans ton tableau.

    Cela dit, tu nous signales que ça marche bien quand même dans un certain cas. Est-ce un coup de chance ou bien n'ai-je rien compris?

  3. #3
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Re,

    Citation Envoyé par Climoo Voir le message
    Sympa ce genre de structures de données...
    J'utilise ce schéma par rapport au stockage qui est fait au format json et une autre partie javascript.

    Citation Envoyé par Climoo Voir le message
    Ton appel récursif pour commencer
    L'appel récursif est fait pour l'exploration, mais au final, je ne cherche qu'une seule possibilité, mais c'est un point intéressant que je vais explorer demain.

    Citation Envoyé par Climoo Voir le message
    Ensuite les strcmp, pas tout compris
    Il faut vraiment voir comme une exploration de fichiers : chaque profondeur correspond un dossier qui peut contenir un fichier ou, à nouveau, un répertoire. Je cherche donc une corrélation entre une clé et sa valeur (comme un fichier modifié hier, à 14h par exemple).

    EDIT:
    L'algo fonctionne sur le but, à savoir, trouver la corrélation, mais c'est me retourner le sous-tableau complet qui me pose problème (et je pense que ta remarque intervient).

  4. #4
    Membre régulier Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Points : 107
    Points
    107
    Par défaut
    Re,

    En fait, un "bête" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_tRes=getSubTab($val,$_champ,$_id,$_tRes);
    suffit.

    Merci

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

Discussions similaires

  1. [Débutant] extraction sous-tableau dans un tableau
    Par sebounours dans le forum Signal
    Réponses: 1
    Dernier message: 30/01/2015, 14h30
  2. [XL-2007] Extraction AUTOMATIQUE de sous tableau
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/09/2010, 14h06
  3. [csv] extraction sous ce format
    Par squalito dans le forum Oracle
    Réponses: 2
    Dernier message: 05/02/2006, 20h52
  4. Réponses: 1
    Dernier message: 13/12/2005, 11h30
  5. Fonction EXTRACT sous Informix
    Par lord_of_ankou dans le forum Informix
    Réponses: 3
    Dernier message: 20/08/2003, 17h37

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