Question

est-il possible de le faire? (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:

0 est var 10

var 1 est 9

var 2 est 8 ...

Mais mon code est erroné, il donne une liste énorme. gourou Php, aidez-moi !!

Était-ce utile?

La solution

Essayez 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. A la fin de chaque $i chaque boucle est incrémenté d'une unité ($i++) et $k décrémenté d'une ($k--). Donc $i aura les valeurs 0, 1, ..., 10 et $k les valeurs 10, 9, ..., 0.

Autres conseils

Vous pouvez également ajouter une condition pour la seconde variable

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

Vous ne devriez pas utiliser deux pour boucles pour ce que vous souhaitez réaliser que vous êtes en boucle 121 fois au total (11x11). Qu'est-ce que vous voulez vraiment est juste d'avoir un compteur déclaré en dehors de la boucle qui suit j, puis j décrémenter dans la boucle.

Edit: Merci Gumbo pour attraper l'inclusion pour moi

.

Si, en tant que votre code ressemble, vous avez deux valeurs en cours d'exécution de la direction opposée, vous pouvez simplement substract:

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

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

Pour développer les autres réponses (correctes), ce que vous faisiez est appelé nichant boucles. Cela signifie que pour chaque itération de la boucle extérieure (la première), vous remplissiez la totalité de la boucle intérieure. Cela signifie qu'au lieu de 11 sorties, vous obtenez sorties 11 + 11 + 11 + ... = 11 * 11

array_map(function($i) {
    echo "Var {$i} is ".(10-$i)."<br/>".PHP_EOL; 
}, range(1,10));

J'ai essayé d'obtenir un début et de fin et de stocker dans la base de données, étant donné un début et de fin, boucle vous à travers chaque fois en utilisant deux variables i et 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)
        ]);
   }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top