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 :

Element suivant dans une boucle "Foreach"


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut Element suivant dans une boucle "Foreach"
    Bonjour,

    Je venais vous demander une petite chose :/
    Sauriez-vous comment obtenir l'élément suivant dans une boucle foreach?

    Car je possède un tableau associatif mais de la forme $tablo[$element][$id] (où $id est un numéro, et $element est une chaîne de caractères).

    Le problème c'est que j'ai absolument besoin de récupérer non pas $element mais "$element+1" :/ Je bloque depuis un sacré moment là-dessus..

    J'ai tenté de passer par une boucle "for" de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(i=0;i<count($tablo);i++){
        echo $tablo[$i+1];
    }
    Mais cette boucle ne peut évidemment pas fonctionner étant donné que $element est une chaîne de caractère... Une solution?

    Merci à vous

  2. #2
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    essay voir avec next() et prev()

    les manuels sont tes amis

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Citation Envoyé par hiul dragonfel Voir le message
    essay voir avec next() et prev()
    Si ça marche tu es mon dieu

    J'avais déjà vu ce fameux next() mais en visual basic, je ne savais pas que ça existait sous PHP Je test et je vous tiens au courant, merci encore

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Hum ça déconne

    si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $var=next($tablo);
    echo $var;
    Ca me retourne la clé de l'élément suivant :/
    Par exemple si j'ai $tablo[1]["bonjour"] et $tablo[2]["salut"] ben ça me récupère "2", et moi je voudrais le "salut"

    Une idée? Merci en tout cas

    EDIT : Je n'avais pas vu vos deux réponses entre-temps Je vais manger, je testerai tout ça tout à l'heure! merci à tous

  5. #5
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    et avec ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tableau[1] = "salut";
    $tableau[2] = "coucou";
    $tableau[3] = "yo";
     
    $var = next($tableau);
     
    echo($var) // coucou

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Citation Envoyé par hiul dragonfel Voir le message
    et avec ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $tableau[1] = "salut";
    $tableau[2] = "coucou";
    $tableau[3] = "yo";
     
    $var = next($tableau);
     
    echo($var) // coucou

    Evidemment votre code fonctionne, mais mon $tableau n'est pas comme le vôtre.. C'est un tableau à deux dimensions que je possède (donc $tableau[$element][$id]).
    Tout le problème vient de cette chaîne

  7. #7
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour, ou sinon une petite fonction tirée d'un exemple :

    Code php : 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
     
     
    $tableau['cle1'][0] = 'a';
    $tableau['cle2'][0] = 'b';
    $tableau['cle2'][1] = 'c';
    $tableau['cle3'][0] = 'd';
    $tableau['cle4'][0] = 'e';
     
    function array_key_relative($array, $current_key, $offset = 1) {
     
            $keys = array_keys($array);
            $current_key_index = array_search($current_key, $keys);
     
            if(isset($keys[$current_key_index + $offset])) {
                return $keys[$current_key_index + $offset];
            }
            return false;
       }
     
     
    echo array_key_relative($tableau, 'cle1', 1);
    // --- affiche cle2
     
    echo array_key_relative($tableau, 'cle1', 3);
    // --- affiche cle4
     
    echo array_key_relative($tableau, 'cle4', -1);
    // --- affiche cle3

  8. #8
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    quite à lui donner un truc comme ça autant que ça marche tout le temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function array_key_relative($array, $offset = 0){
       if($offset < 0){
          for($i = $offset; $i < 0; $i++)prev($array);
          return key($array) != NULL ? key($array): key(reset($array));
       }elseif($offset > 0){
          for($i = 0; $i < $offset; $i++)next($array);
          return key($array) != NULL ? key($array): key(end($array));
       }else return key($array);
    }

Discussions similaires

  1. Passer directement a l'iteration suivante dans une boucle for
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 26/07/2023, 12h40
  2. Suivant dans une boucle
    Par kaking dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2009, 08h21

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