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] la boucle foreach


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 87
    Points : 49
    Points
    49
    Par défaut [Tableaux] la boucle foreach
    bonjour,

    j'aimerais qque explication sur le foreach.

    tout d'abord , je met mon code pour expliquer le probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	$fp = fopen("C:\\temp\\cours_1BAC_1partie\\index.htm","r"); //lecture du fichier
     
    	while (!feof($fp)) 
    	{ //on parcoure toutes les lignes
    	  $chaine .= fgets($fp, 4096); // lecture du contenu de la ligne
    	}
    	fclose($fp);
     
    	preg_match_all('`(<a.+[^>])>(.+)?(<\/a>)`',$chaine,$match);
    //recupere le nom dans l'index
     
    	preg_match_all('`(<a.+[^>])"(.+)?(")`',$chaine,$match1);  //recupere le nom de fichier
    ensuite pour consulter, je fais un foreach:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach ($match[2] as $item) 
    {
    	echo "$item<br>"
    }
    foreach ($match1[2] as $item)
    {
            echo "$item<br>"
    }
    voici un bout de code de mon fichier index.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <li>
    <a href="page_04.htm">1.1 Utilisation de base </a><ol>
    <li><a href="page_05.htm">1.1.1 Quelques définitions </a></li>
    <li><a href="page_06.htm">1.1.2 Type de données </a></li>
    <li><a href="page_07.htm">1.1.3 Copier, coller, tirer </a></li>
    <li><a href="page_08.htm">1.1.4 Formules et adressage </a></li>
    <li><a href="page_09.htm">1.1.5 Fonctions </a></li>
    <li><a href="page_10.htm">1.1.6 Fonctions matricielles </a></li>
    </ol>
    </li>
    jusqu'ici, tout fonctionne!

    En faite j'aimerais afficher simultanément le nom et le nom de fichier donc j'aimerais afficher les 2 dans une seule boucle foreach...
    je voudrais avoir un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ( ($match[2] as $item) and ($match1[2] as $item1) )
    {
            echo "$item: $item1<br>"
    }
    evidemment, ceci ne fonctionne pas

    comment est-ce que je peux faire? ??

    merci de votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Est-ce que ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach ($match[2] as $item) 
    { 
       echo "$item<br>" 
    } 
    foreach ($match1[2] as $item) 
    { 
            echo "$item<br>" 
    }
    Et ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "$match[2]<br>" 
    echo "$match1[2] <br>"
    Ne fairait-il pas la meme chose :

  3. #3
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Bonjour,

    Je ne comprends pas trop le foreach et le $match[2]

    A moins que $match ne soit un tableau composé, ce qui ne semble pas être le cas ici

    Je te propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($match as $key => $item)
    {
       echo "$item<br>";
       echo $match1[$key]."<br>";
    }
    Il faut évidemment pour que ceci fonctionne qu'il y aie concordance exacte entre les valeurs des deux tableaux
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    ben il me faut une boucle vu qu'il trouve plusieurs occurence dans mon fichier html

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ($match[2] as $item)
    {
       echo "$item<br>"
    }
    il affichera:
    1.1 Utilisation de base
    1.1.1 Quelques définitions
    1.1.2 Type de données
    1.1.3 Copier, coller, tirer
    1.1.4 Formules et adressage
    1.1.5 Fonctions
    1.1.6 Fonctions matricielles

    et pour
    [php]
    foreach ($match1[2] as $item)
    {
    echo "$item<br>"
    }
    [/php]
    il affichera:
    page_04.htm
    page_05.htm
    page_06.htm
    page_07.htm
    page_08.htm
    page_09.htm
    page_10.htm

    donc il me faut un foreach mais je sais pas cmt faire pour obtenir cette affichage là:
    1.1 Utilisation de base : page_04.htm
    1.1.1 Quelques définitions : page_05.htm
    ...
    ect

    quelqu'un a-t-il une idée?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    gilmaire a donne la solution, il faut juste utiliser un tableau de tableau ...

  6. #6
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for($i=0;$i<sizeof($match[2]);$i++) {
    echo $match[2]$i.": ".$match1[2]."<br>";
    }
    tu peux aussi faire une imbriquation de foreach:
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par gilmaire
    Bonjour,

    Je ne comprends pas trop le foreach et le $match[2]

    A moins que $match ne soit un tableau composé, ce qui ne semble pas être le cas ici

    Je te propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($match as $key => $item)
    {
       echo "$item<br>";
       echo $match1[$key]."<br>";
    }
    Il faut évidemment pour que ceci fonctionne qu'il y aie concordance exacte entre les valeurs des deux tableaux

    ok merci
    j'ai modifier un peu ton code et ca fonctionne avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach ($match[2] as $key => $item)
    	{
       		echo "$item<br>";
      		 echo $match1[2][$key]."<br>";
    	}

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Juste un détail supplémentaire : évite les guillemets doubles quand tu n'as besoin que de simples.

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

Discussions similaires

  1. Parcourir plusieurs tableaux dans une boucle foreach
    Par snorky94 dans le forum Langage
    Réponses: 8
    Dernier message: 06/02/2014, 12h34
  2. [Tableaux] bug boucle foreach
    Par franfr57 dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2007, 11h48
  3. [Tableaux] Boucle foreach inbriquée
    Par nebil dans le forum Langage
    Réponses: 17
    Dernier message: 10/09/2006, 11h40
  4. Réponses: 1
    Dernier message: 11/03/2006, 21h19
  5. [Tableaux] Comprendre le foreach()
    Par jexl dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2006, 11h30

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