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 :

Comparaison dans une boucle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut Comparaison dans une boucle
    Bonjour à tous,

    J'ai une boucle qui liste des produits et je voudrais pouvoir comparer le dernier produit avec l'avant dernier.
    Si ils sont identiques traitement A sinon traitement B.

    Merci d'avance de votre aide.

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,

    si tu veux juste comparer le dernier et l'avant dernier élément, il n'y a pas d'intérêt à faire ca dans une boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // $liste est un array
    $dernier = count($liste) - 1;
    $avant_dernier = $dernier--;
    if($liste[$dernier] == $liste[$avant_dernier]){
        // traitement A
    }
    else{
        // traitement B
    }
    Si dans une boucle tu veux comparer l'élément courant avec celui qui le précède :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // $liste est un array
    $preceding_item = null;
    foreach($liste as $item){
        if(is_null($preceding_item) || $preceding_item != $item){
            // traitement A
        }
        else{
            // traitement B
        }
        $preceding_item = $item;
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Oui mais ma boucle vient d'une requête qui me liste des données de mes bases.

    Merci d'avance

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Re,

    dans les deux cas la réponse se trouve juste au dessus, que ce soit si tu veux comparer les deux derniers enregistrements ou si tu veux comparer l'enregistrement courant (celui que tu parcours dans ta boucle) avec l'enregistrement précédent (celui que tu viens juste de parcourir dans ta boucle).

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Ok,

    Bon j'ai essayé un truc 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
     
    $article = array();			
    while ($donnees_vente_mois = mysql_fetch_array($retour_vente_mois))
     		{ 
    		$article[$donnees_vente_mois['article']] = $donnees_vente_mois['article'];
     
    		foreach($article as $liste)
    			{
    			$dernier = count($liste) - 1;
    			$avant_dernier = $dernier-1;
    			if($liste[$dernier] == $liste[$avant_dernier])
    			{ $couleur = " bgcolor='#999999'";}
    			else { $couleur = ""; }
    			}
                              }
    J'ai juste mis une balise couleur afin de voir ds mon tableau si cela fonctionne ou pas.
    J'ai le message d'erreur suivant :

    Notice: Uninitialized string offset: -1

    Merci encore pour ton aide !

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Re,

    pourquoi mettre le foreach dans le while ?

    Il y a beaucoup de fautes de synthaxe et du traitements inutiles, tu n'as pas trop compris mon exemple.

    Pour finir, en fait ce que tu veux faire c'est colorier une ligne sur 2 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $index = 0;
    while ($donnees_vente_mois = mysql_fetch_array($retour_vente_mois)){ 
    	if($index % 2 == 0){
       		// nombre pair
    		echo '<font style="color:">'.$donnees_vente_mois[0].'</font>';
    	}
    	else{
    		// nombre impair
    		echo $donnees_vente_mois[0];
    	}
    	$index++;
    }

Discussions similaires

  1. comparaison de données dans une boucle
    Par jeff6868 dans le forum R
    Réponses: 3
    Dernier message: 28/03/2012, 13h03
  2. comparaison dans une boucle inutile ou non ?
    Par AnozerOne dans le forum Débuter
    Réponses: 2
    Dernier message: 13/05/2011, 13h56
  3. comparaison+affectation dans une boucle
    Par casafa dans le forum C++
    Réponses: 6
    Dernier message: 07/06/2008, 13h25
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 15h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 09h52

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