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] Diviser un tableau en sous-tableaux


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Par défaut [Tableaux] Diviser un tableau en sous-tableaux
    Bonjour,

    Je récupère d'une base mysql un tableau contenant des objets (résultat traité avec mysql_fetch_object()). Je voudrais diviser ce (gros) tableau en sous tableau selon la valeur d'un attribut de l'objet.
    Bien sur je pourrais faire ça avec une boucle mais ça me semble bien lourd... Existerait-il une petite fonction php qui fait ce traitement? J'ai cherché dans la doc php, mais rien trouvé a priori.

    Grossièrement, voici un code possible je pense pour ce genre de découpe :
    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
     
    $salarieCourant=$tab[0]->salarie; //$tab =>les objets recuperes par mysql_fetch_object()
    $j=0; $k=0;
    for($i=0;$i<count($tab);$i++)
    {
                 if($salarieCourant==$tab[$i]->salarie)
                 {
                          $lesSousTab[$j][$k]=$tab[$i];
                          $k++;
                 }
                 else
                 {
                          $j++;
                          $k=0;
                          $lesSousTab[$j][$k]=$tab[$i];
                 }
    }
    En espérant m'être bien expliquée, merci pour votre aide,
    Cordialement,

    Fayred

  2. #2
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Normalement tu es bien partie mais j++ doit être placé après sinon il va commencer à 1 alors qu'il doit commencer à zéro. Il ne faut pas que tu réinitialise $k à zéro quand tu es dans ton else sinon il va écraser les anciennes valeurs.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Par défaut
    j'ai une remarque ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0;$i<count($tab);$i++)
    il est mieux de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0,$c=count($tab);$i<$c;$i++)
    comme ça le compilateur n'aura pas besoin de compter le nombre d'éléments à chaque iteration

  4. #4
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Citation Envoyé par mbounou Voir le message
    j'ai une remarque ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0;$i<count($tab);$i++)
    il est mieux de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0,$c=count($tab);$i<$c;$i++)
    comme ça le compilateur n'aura pas besoin de compter le nombre d'éléments à chaque iteration
    Non, dans un article parut ici sur les bench PHP. Il est préférable de faire ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $NbElement = count($tab)
    for($i=0;$i<$NbElement ;$i++)

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Par défaut
    mais je crois que c'est la même chose!

  6. #6
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Citation Envoyé par mbounou Voir le message
    mais je crois que c'est la même chose!
    Oui c'est la même chose.

Discussions similaires

  1. Tableau et sous tableaux : packages caption et subfig
    Par LorenzoLoren dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 08/03/2012, 17h15
  2. Découpage d'un tableau en sous tableaux
    Par ivan-dev dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2010, 16h22
  3. Parcours tableau avec sous-tableaux
    Par Yann39 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 23/06/2010, 17h23
  4. Découpage d'un tableau de cellules en sous-tableaux
    Par sseneor dans le forum MATLAB
    Réponses: 19
    Dernier message: 17/09/2007, 23h01
  5. Réponses: 11
    Dernier message: 13/12/2006, 12h13

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