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 !!
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.
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.
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.
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>";
}
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
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 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)
]);
}