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 :

Utiliser 2 array pour 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
    Février 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 110
    Par défaut Utiliser 2 array pour une boucle foreach()
    Bonjour

    Tout simplement je me demande si il est possible d'utiliser 2 tableaux arrays combiner dans une boucle comme ceci

    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
    $note= array ("francais Ecrit" => $francaisE,"francais Oral" => $francais0,"mathématiques" => $maths,"GSI" => $gsi,"Philosophie" => $philo,"Éco/Droit" => $eco_droit,"Mmanagement" => $management,"Eps" => $eps,"Anglais" => $anglais,"Espagnole" => $espagnole,"Histoire/Geo" => $histoire_geo);
     
    $coef =array ( 2, 2, 4, 12, 2, 6, 4, 2, 2, 2, 2 );
     
    ?>
    <br />
    <table border="1">
     
    	<tr>
    	<th>Matiéres</th>
    	<th>Notes</th>
    	<th>Coefficients</th>
    	</tr>
    <?
    foreach ($note as $clef => $ele) && ($coef as $co)
    {
    	echo "<tr><td>" .$clef. "</td><td>" .$ele. "</td><td> " .$co. "</td></tr>"; 
    }
    Merci à vous

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Par défaut
    Bonsoir,

    A mon sens, il faudrait plutot utiliser un tableau multidimentionnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $matieres = array(
     'francais' => array(
      'note' => 2,
      'coef' => 3,
     ),
     ...
    );
     
    foreach($matieres as $nom => $matiere) {
     
     echo $matiere['note'];
     echo $matiere['coef'];
     
    }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 41
    Par défaut
    Ou, mais c'est crado :


    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
    $note= array ("francais Ecrit" => $francaisE,"francais Oral" => $francais0,"mathématiques" => $maths,"GSI" => $gsi,"Philosophie" => $philo,"Éco/Droit" => $eco_droit,"Mmanagement" => $management,"Eps" => $eps,"Anglais" => $anglais,"Espagnole" => $espagnole,"Histoire/Geo" => $histoire_geo);
     
    $coef =array ( 2, 2, 4, 12, 2, 6, 4, 2, 2, 2, 2 );
     
    ?>
    <br />
    <table border="1">
     
    	<tr>
    	<th>Matiéres</th>
    	<th>Notes</th>
    	<th>Coefficients</th>
    	</tr>
    <?
    $i = 0;
    foreach ($note as $clef => $ele)
    {
    $co = $coef[$i];
    $i++;
    echo "<tr><td>" .$clef. "</td><td>" .$ele. "</td><td> " .$co. "</td></tr>"; 
    }

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    la version en objet plus lourd mais au final plus simple
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <?php
    class Matiere {
      private $_name = null;
      private $_coef = 1;
      private $_note = 0;
     
      public function __construct($name, $note, $coef = 1) {
         $this->setName($name);
         $this->setNote($note);
         $this->setCoef($coef);
      }
     
      function getName(){
        return $this->_name;
      }
     
      function getCoef(){
        return $this->_coef;
      }
     
      function getNote(){
        return $this->_note;
      }
     
      function setName($name){
        $this->_name = $name;
      }
     
      function setCoef($coef){
        $this->_coef = $coef;
      }
     
      function setNote($note){
        $this->_note = $note;
      }
    }
    class Notes implements Iterator {
        private $position = 0;
        private $array = array();  
     
        public function __construct() {
            $this->position = 0;
        }
     
        public function addNote($name, $note, $coef = 1){
          array_push($this->array, new Matiere($name, $note, $coef));
        }
     
        function rewind() {
            $this->position = 0;
        }
     
        function current() {
            return $this->array[$this->position];
        }
     
        function key() {
            return $this->position;
        }
     
        function next() {
            ++$this->position;
        }
     
        function valid() {
            return isset($this->array[$this->position]);
        }
    }
    $notes = new Notes();
    $notes->addNote('francais Ecrit', 10, 3);
    $notes->addNote('francais Oral', 12, 1);
    $notes->addNote('mathématiques', 10, 4);
    $notes->addNote('GSI', 13, 7);
    ?>
    <br />
    <table border="1">
     
        <tr>
        <th>Matiéres</th>
        <th>Notes</th>
        <th>Coefficients</th>
        </tr>
    <?php
    foreach ($notes as $note)
    {
      echo "<tr><td>" .$note->getName(). "</td><td>" .$note->getNote(). "</td><td> " .$note->getCoef(). "</td></tr>"; 
    }
    ?>
    </table>
    edit: je voulais tester l'iteration pour mes dev, une bonne occasion pour montrer les classes

Discussions similaires

  1. Réponses: 40
    Dernier message: 04/11/2016, 17h28
  2. Utilisation de filter() dans une boucle foreach
    Par webcreanord dans le forum Langage
    Réponses: 7
    Dernier message: 19/03/2013, 15h56
  3. Utiliser les noms de colonne pour une boucle for
    Par RémiCA33 dans le forum R
    Réponses: 2
    Dernier message: 01/07/2010, 09h52
  4. utiliser une valeur float pour une boucle for
    Par didi59650 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/04/2006, 17h32
  5. [MASM] Utiliser un .IF pour une comparaison de nombre signés
    Par Crisanar dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 24/11/2004, 16h32

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