2009-07-23 6 views
21

ist es möglich, dies zu tun? (Hier ist mein Code)PHP for Schleife mit 2 Variablen?

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

Ich möchte etwas wie folgt aus:

var 0 10

var 1 9

var 2 8 ...

Aber mein Code ist falsch, es gibt eine riesige Liste. Php Guru, hilf mir !!

Antwort

51

Try this:

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

Die beiden Variablen $i und $k mit 0 und 10 jeweils initialisiert. Am Ende jeder Schleife wird $i um eins ($i++) und $k um eins erhöht ($k--). So haben $i die Werte 0, 1, ..., 10 und $k die Werte 10, 9, ..., 0.

+6

+1 - wusste nicht einmal, dass Sie das tun könnten! –

+0

Oh wow. Ich hatte keine Ahnung, dass Sie mehrere Variablen innerhalb einer For-Schleife setzen. Nett. – Sampson

+0

Gegeben, was die Syntax einer for-Schleife bedeutet, macht es Sinn ... –

1

Sie sollten nicht zwei for-Schleifen für das verwenden, was Sie erreichen möchten, wie Sie ' Looping insgesamt 121 mal (11x11). Was Sie wirklich wollen, ist nur ein Zähler außerhalb der Schleife deklariert werden, die j verfolgt, und dekrementieren Sie dann j innerhalb der Schleife.

Edit: Danke Gumbo für die Erfassung der Aufnahme für mich.

+0

Tatsächlich ist es 11 · 11 = 121 (von 0 bis einschließlich 10). – Gumbo

+0

Ah, ja, habe das nicht mal gesehen. – AlbertoPL

0

Um auf die anderen (richtigen) Antworten zu erweitern, heißt das, was Sie getan haben, Verschachtelung Schleifen. Dies bedeutet, dass Sie für jede Iteration der äußeren Schleife (die erste) die gesamte innere Schleife abgeschlossen haben. Dies bedeutet, dass statt 11 Ausgänge, Sie 11 + 11 + 11 + ... = 11 * 11 Ausgänge

1

bekommen Wenn, wie Ihr Code wie folgt aussieht, können Sie zwei Werte haben die entgegengesetzte Richtung laufen Sie konnte einfach subtrahieren:

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

Aber ich denke, das ist nicht wirklich was willst du? Seien Sie auch vorsichtig mit dem vorgeschlagenen comma operator. Während es eine nette Sache ist, kann es in anderen Sprachen wie C and C++ frechen Nebenwirkungen verursachen, da PHP es anders implementiert.

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

Sie können auch eine Bedingung für die zweite Variable

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

Ich habe versucht, fügen Sie eine Start- und Endzeit und Laden in der Datenbank zu erhalten, da eine Start- und Endzeit, Sie Schleife durch jede Zeit mit zwei Variablen 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) 
     ]); 
    }