Php pour boucle avec 2 variables?

est-il possible de faire cela? (voici mon code)

for ($i = 0 ; $i <= 10 ; $i++){
  for ($j = 10 ; $j >= 0 ; $j--){
     echo "Var " . $i . " is " . $k . "<br>";
  }
}

je veux quelque chose comme ceci:

var 0 est 10

var 1 est 9

var 2 est 8 ...

Mais mon code est faux, il donne une liste énorme. PHP gourou, Aidez-moi !!

24
demandé sur jingleboy99 2009-07-23 19:22:53

7 réponses

essaye ceci:

for ($i=0, $k=10; $i<=10 ; $i++, $k--) {
    echo "Var " . $i . " is " . $k . "<br>";
}

Les deux variables $i et $k sont initialisés avec 0 et 10 respectivement. À la fin de chaque boucle $i va être incrémenté ($i++ et $k décrémenté de un ($k--). Donc $i les valeurs 0, 1, ..., 10 et $k les valeurs 10, 9,..., 0.

56
répondu Gumbo 2009-07-23 15:24:45

vous ne devriez pas utiliser deux for-loops pour ce que vous voulez accomplir puisque vous êtes en boucle 121 fois le total (11x11). Ce que vous voulez vraiment est juste d'avoir un compteur déclaré en dehors de la boucle qui suit j, et ensuite décrémenter j à l'intérieur de la boucle.

Edit: Merci Gumbo pour la capture de l'inclusion pour moi.

1
répondu AlbertoPL 2009-07-23 15:33:37

si, comme votre code ressemble, vous avez deux valeurs dans la direction opposée que vous pouvez simplement soustraire:

echo "Var " . $i . " is " . 10 - $i . "<br>";

Mais je suppose que c'est pas vraiment ce que vous voulez? Aussi, soyez prudent avec les suggérée opérateur virgule. Bien que ce soit une bonne chose, il peut causer des effets secondaires méchants dans d'autres langues comme C et c++ comme PHP l'implémente différemment.

1
répondu bluebrother 2009-07-23 15:41:52

Vous pouvez aussi ajouter une condition pour la deuxième variable

for ($i=0, $k=10; $i<=10, $k>=0 ; $i++, $k--) {
    echo "Var " . $i . " is " . $k . "<br>";
}
1
répondu Mihail Minkov 2017-12-04 19:21:06

pour développer les autres réponses (correctes), ce que vous faisiez s'appelle imbrication boucles. Cela signifie que pour chaque itération de la boucle extérieure (la première), vous avez complété la boucle intérieure entière. Cela signifie qu'au lieu de 11 sorties, vous obtenez 11 + 11 + 11 + ... = 11 * 11 sorties

0
répondu Sean 2009-07-23 15:28:05
array_map(function($i) {
    echo "Var {$i} is ".(10-$i)."<br/>".PHP_EOL; 
}, range(1,10));
0
répondu jlettvin 2015-07-30 07:08:40

j'ai essayé d'obtenir un début et la fin de l'heure et stocker dans la base de données, donné un début et la fin de l'heure, vous boucle à travers chaque fois en utilisant deux variables i&j

   $start = "09:00";
   $end = "18:00";
   $strEnTim = strtotime("10.00");

   $slotStart = strtotime($start);
   $slotEnd = strtotime($end);
   $slotNow = $slotStart;

   for( $i=$slotStart, $j=$strEnTim; $i, $j<=$slotEnd; $i+=3600,  $j+=3600) 
   {
        if(( $i < $slotNow) && ( $j < $strEnTim)) continue;
        Slot::create([
            'start_time' => date("H:i",$i),
            'end_time' => date("H:i", $j)
        ]);
   }
0
répondu Chika Ugwuanyi 2016-06-25 15:03:46