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 :

Parcourir et trier un tableau de valeur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 24
    Points : 20
    Points
    20
    Par défaut Parcourir et trier un tableau de valeur
    bonjour

    j'ai récupérer un tableau de valeur que je n'arrive pas traiter.
    Ce tableau se compose de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [0]=> string(10) "Chapitre 1" 
     [1]=> string(2) "50" 
     [2]=> string(2) "51" 
     [3]=> string(2) "53" 
     [4]=> string(10) "Chapitre 2" 
     [5]=> string(2) "82" 
     [6]=> string(2) "83" 
     [7]=> string(2) "84"
     [8]=> string(2) "85"
     [9]=> string(10) "Chapitre 3" 
     [10]=> string(2) "86" 
     [11]=> string(2) "87"
    j'ai besoin de récupérer le Numéro du chapitre (1, 2 ou 3) qui correspond a l'id d'un session

    Exemple: je veux savoir à quelle chapitre corresponds l'id 83 est obtenir comme retour 2. Idem pour l'id 50 qui corresponds au chapitre 1 ....

    J'avoue ne pas savoir comment m'y prendre. quelles idées a me suggérer ?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    est ce que chaque "id" est unique ?
    si c'est le cas, vous pouvez parcourir les valeurs comme ça :

    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
     
    $valeurs = [
    	"Chapitre 1",
    	"84",
    	"85",
    	"86",
    	"Chapitre 2",
    	"284",
    	"285",
    	"286",
    	"Chapitre 3",
    	"184",
    	"185",
    ];
     
     
    $nomChapitre = NULL;
     
    $resultat = [];
     
     
    foreach ($valeurs as $v) {
     
    	if (0 === strpos($v, "Chapitre ")) {
    		$nomChapitre = $v;
    	} else {
    		$resultat[$v] = $nomChapitre;
    	}
     
    }
     
     
    /*
    $resultat contient : 
     
    [
      84 => 'Chapitre 1',
      85 => 'Chapitre 1',
      86 => 'Chapitre 1',
      284 => 'Chapitre 2',
      285 => 'Chapitre 2',
      286 => 'Chapitre 2',
      184 => 'Chapitre 3',
      185 => 'Chapitre 3',
    ]
     
    */

  3. #3
    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,

    un truc dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getChapitre($id, array $data) {
        $chap = '';
        foreach ($data as $v) {
            if ($v == $id) {
                return $chap;
            } elseif (stripos($v, 'Chapitre') !== false) {
                $chap = $v;
            }
        }
        return '';
    }

  4. #4
    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
    Remarque annexe : Si tu as la main dessus, ça pourrait être une bonne idée de le faire directement à la construction du tableau. Mais je suppose que si tu poses la question, c'est que le format du tableau t'est imposé.
    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]

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup
    j'ai utilisé la version de rawsrc
    ça marche nickel!
    J'ai eu un petit peu de mal à comprendre au départ le fonction et l'utilisation de stripos.
    Mais finalement c'est bon et je suis contente d'avoir appris un nouveau truc.

    Un dernier petit coup de pouce pour réussir à récupérer uniquement le numéros du chapitre "2" et non "Chapitre 2" ?

  6. #6
    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,

    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $str  = 'Chapitre 2';
    $chap = filter_var($str, FILTER_SANITIZE_NUMBER_INT); // $chap = 2, attention, ça peut aussi renvoyer le signe + ou - s'il est présent
    Tu peux aussi passer par un regex, je te laisse chercher

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Super! ça marche nickel
    Merci encore pour ton aide !

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

Discussions similaires

  1. [Débutant] [.NET 2.0] Trier un tableau associatif par valeur
    Par Galdon dans le forum VB.NET
    Réponses: 7
    Dernier message: 07/12/2011, 17h37
  2. [XL-2003] Trier un tableau en valeur absolue
    Par zangaloni dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2011, 15h45
  3. Trier un tableau sur la valeur
    Par mathias59 dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2011, 19h57
  4. Trier un tableau de valeurs uniques
    Par phroy dans le forum Excel
    Réponses: 3
    Dernier message: 04/11/2009, 17h14
  5. parcourir tableau clé/valeur
    Par yanice dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/06/2007, 13h13

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