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 :

controle d'une boucle foreach


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Points : 27
    Points
    27
    Par défaut controle d'une boucle foreach
    Bonjour,

    Sachant qu'une boucle foreach lit tous les eléments d'un tableau est-il possible d'éviter l'affichage du premier
    élément de ce tableau pour les 2 boucles foreach, ici le premier élément de $category et $attributes ?

    Dans un premier temps, j'ai assayé array_slice mais j'obtiens un warning
    Warning: array_slice() expects parameter 1 to be array,

    foreach (array_slice($attributes, 1) as $attribute) {
    ...
    foreach (array_slice($values, 1) as $value) {

    code d'origine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $category = $document->categories->category;
    $attributes = $category->attributes->attribute;
     
    foreach ($attributes as $attribute) { 
    echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>{$attribute->name}\n</div>"; 
    $values = $attribute->attributeValues->attributeValue; 
    foreach ($values as $value) 
    { 
    printf("<span class='result_list'><a href=?attributeValue=%s&categories=".$_GET['categories']."&k=".$_GET['k']."> %-16s</a></span><br /> \n", $value["id"], $value->name); 
    } 
    echo "</div></div>"; 
    } 
    echo "</div>";
    Auriez-vous un autre idée qui permette cela ,

    merci manuso

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Hmm... si je ne me suis pas trompé :
    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
     
     $category = $document->categories->category;
    $attributes = $category->attributes->attribute;
    $i = 0;
    foreach ($attributes as $attribute) {
        if($i) {
            echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>{$attribute->name}\n</div>";
            $values = $attribute->attributeValues->attributeValue;
        }
        foreach ($values as $value){
            if($i) {
                printf("<span class='result_list'><a href=?attributeValue=%s&categories=".$_GET['categories']."&k=".$_GET['k']."> %-16s</a></span><br /> \n", $value["id"], $value->name);
                echo "</div></div>";
            }
        }
        $i++;
    }
    echo "</div>";

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par sachav Voir le message
    Hmm... si je ne me suis pas trompé :
    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
     
     $category = $document->categories->category;
    $attributes = $category->attributes->attribute;
    $i = 0;
    foreach ($attributes as $attribute) {
        if($i) {
            echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>{$attribute->name}\n</div>";
            $values = $attribute->attributeValues->attributeValue;
        }
        foreach ($values as $value){
            if($i) {
                printf("<span class='result_list'><a href=?attributeValue=%s&categories=".$_GET['categories']."&k=".$_GET['k']."> %-16s</a></span><br /> \n", $value["id"], $value->name);
                echo "</div></div>";
            }
        }
        $i++;
    }
    echo "</div>";
    Sur le plan php c'est presque parfait puisque l'affichage démarre ou il
    faut en revanche cela génère un
    Warning: Invalid argument supplied for foreach()
    je ne vois pas ce qui peut produire cela par rapport a ce changement

    merci pour ce code

    manuso

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Ah oui...

    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
     
    $category = $document->categories->category;
    $attributes = $category->attributes->attribute;
    $i = 0;
    foreach ($attributes as $attribute) {
        if($i) {
            echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>{$attribute->name}\n</div>";
            $values = $attribute->attributeValues->attributeValue;
            foreach ($values as $value){
                printf("<span class='result_list'><a href=?attributeValue=%s&categories=".$_GET['categories']."&k=".$_GET['k']."> %-16s</a></span><br /> \n", $value["id"], $value->name);
                echo "</div></div>";
            }
        }
        $i++;
    }
    echo "</div>";

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    [quote=sachav;4781246]Ah oui...

    Merci, il n'y a plus d'erreur en revanche mon résonnement est moins bon, mais je ne désespère
    pas. j'ai l'impression que ma vérification n'est pas bonne pour $foundresults
    En fait ce code revu sous cette forme a pour but de vérifier la presence d'un attribut dans un fichier xml <attribute id="category">, comme cet attribut est en premier, s'il existe je démarre a 1) sinon
    a 2). C'est bizarre si <attribute id="category"> existe et $foundresults == false, alors on passe la premier élément pour autant s'il n'existe pas on ne démarre pas non plus au premier élément comme prévu.

    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
     
    $foundresults=$document->categories[0]->category[0]->attributes[0]->tagAttrs['category'];
    //if($foundresults!=""||$foundresults!=NULL){
    if($foundresults==false){
    // 1)
    $i = 0;
    echo "<div><div>"; //
    foreach ($attributes as $attribute) {
        if($i) {
            echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>{$attribute->name}\n</div>";
            $values = $attribute->attributeValues->attributeValue;
            foreach ($values as $value){
                printf("<span class='result_list'><a href=?attributeValue=%s&categories=".$_GET['categories']."&k=".$_GET['k']."> %-16s</a></span><br /> \n", $value["id"], $value->name);
            }
        }
        $i++;
    echo "</div></div>";
         }
    // 2 )
      } else {
    	foreach ($attributes as $attribute) { 
    	echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>{$attribute->name}\n</div>"; 
    	$values = $attribute->attributeValues->attributeValue; 
    	foreach ($values as $value) 
    	{ 
                printf("<span class='result_list'><a href=?attributeValue=%s&categories=".$_GET['categories']."&k=".$_GET['k']."> %-16s</a></span><br /> \n", $value["id"], $value->name);
    	} 
    	echo "</div></div>"; 
    	} 
     }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Faire un test sur $foundresults, pour s'assurer qu'il soit bien égal à false quand on le souhaite.
    Et au lieu de faire 2 boucles :
    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
     
    <?php
    $foundresults=$document->categories[0]->category[0]->attributes[0]->tagAttrs['category'];
    var_dump($foundresults);
    //if($foundresults!=""||$foundresults!=NULL){
    if(!$foundresults)
        $i = 0;
    else
        $i = 1;
    echo "<div><div>"; //
    foreach ($attributes as $attribute) {
        if($i) {
            echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>{$attribute->name}\n</div>";
            $values = $attribute->attributeValues->attributeValue;
            foreach ($values as $value){
                printf("<span class='result_list'><a href=?attributeValue=%s&categories=".$_GET['categories']."&k=".$_GET['k']."> %-16s</a></span><br /> \n", $value["id"], $value->name);
            }
        }
        $i++;
    echo "</div></div>";
         }
    ?>

Discussions similaires

  1. Parcourir plusieurs fois une boucle foreach
    Par persia dans le forum Langage
    Réponses: 19
    Dernier message: 26/08/2008, 10h56
  2. Effectuer une boucle (foreach) dans une procédure stockée ?!
    Par Danny Blue dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/11/2007, 16h02
  3. verifier formulaire avec une boucle "foreach"
    Par sardo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/03/2007, 12h15
  4. [MySQL] Traitement de Formulaire : générer des ensemble à partir d'une boucle foreach
    Par yodaazen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2006, 15h28
  5. Reproduire des controles avec une boucle
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/06/2006, 11h46

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