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 :

Utilisation de MAX() dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Utilisation de MAX() dans une boucle
    Bonjour à tous,

    Soit la boucle suivante pour lire la largeur de 2 images:
    (Elles font respectivement 126 et 142 px)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    for($i=0;$i<count($prods);$i++){
    $taille[$i] = getimagesize($image_produit);
    $width = max($taille[$i]);
    echo $width."<br>"; // me retourne 
    126
    142
    }
    Ce qui est normal puisqu'on est dans une boucle...
    Mais alors...à quoi sert MAX() ?
    Comment avoir QUE 142 dans la boucle ?


  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Salut Renaud,

    Déjà, ôte le "count" de la boucle, ça évite de recalculer à chaque tour.
    Pour le reste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
      $nb = count($prods);
      for($i = 0; $i < $nb; $i ++)
      {
        $taille = getimagesize($image_produit);
        $largeur[$i] = $taille[0];
      }
      $width = max($largeur);
    ?>
    Pas testé.

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bonjour Jérôme et merci.
    Oui, ok pour le count dans la boucle. C'est vrai.

    Ce qu'il y a, c'est que ma boucle construit en même temps des séries de blocs html et que je voulais que les <td width=$width"> soient définis dans la boucle. Je suis aussi parvenu à extraire le max($width) après la boucle, mais pas DANS la boucle. Ca me retourne toujours toutes les largeurs, mais pas la plus large...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 76
    Points
    76
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    for($i=0;$i<count($prods);$i++){
    $taille[$i] = getimagesize($image_produit);
    $width = max($taille[$i]);
    echo $width."<br>"; // me retourne 
    126
    142
    }
    Hello, désolé mais ton code va pas marcher comme ca...
    getimagesize() te retourne un array avec 7 elements : largeur, hauteur et plein d autre trucs

    donc si tu veux la largeur il faut utiliser
    $infoTailleImage=getimagesize($image_produit); $taille[$i]=$infoTailleImage[0];


    Ensuite si tu cherche la largeur maximum de tous tes $prods ben il faut faire max($taille)

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Tu ne peux pas l'avoir dans ta boucle, puisque le "max" concerne éventuellement une image qui n'est pas encore lue !!!!!
    Tu fais une 2è boucle de génération de colonnes après avoir récupéré la largeur.

  6. #6
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Oui, ok, merci, je faire ça : une 2eme boucle.
    Bonne fin de journée.

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

Discussions similaires

  1. Utiliser le OU dans une boucle while
    Par Yann_69 dans le forum Général Java
    Réponses: 10
    Dernier message: 21/06/2012, 16h32
  2. Utilisation de condition dans une boucle for-each
    Par siro1 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/03/2012, 17h07
  3. [Débutant] utilisation des Textbox dans une boucle For
    Par zayoub dans le forum VB.NET
    Réponses: 31
    Dernier message: 28/07/2011, 15h55
  4. Utiliser un pas dans une boucle For .. to .. do
    Par colorid dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2009, 11h09
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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