Подтвердить что ты не робот

Php для цикла с 2 переменными?

Можно ли это сделать? (вот мой код)

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

Мне нужно что-то вроде этого:

var 0 - 10

var 1 равно 9

var 2 - 8...

Но мой код неправильный, он дает огромный список. Php гуру, помогите мне!

4b9b3361

Ответ 1

Попробуйте следующее:

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

Две переменные $i и $k инициализируются с помощью 0 и 10 соответственно. В конце каждого цикла $i будет увеличиваться на один ($i++) и $k, уменьшенный на один ($k--). Таким образом, $i будет иметь значения 0, 1,..., 10 и $k значения 10, 9,..., 0.

Ответ 2

Вы не должны использовать два for-loops для того, чего бы вы хотели достичь, поскольку вы зацикливаете 121 раз (11x11). То, что вы действительно хотите, это просто иметь счетчик, объявленный вне цикла, который отслеживает j, а затем уменьшает j внутри цикла.

Отредактируйте: Спасибо Gumbo за то, что я поймал включение для меня.

Ответ 3

Если, как выглядит ваш код, у вас есть два значения, которые работают в противоположном направлении, вы можете просто вычесть:

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

Но я думаю, что на самом деле ты не хочешь? Кроме того, будьте осторожны с предлагаемым запятой. Хотя это хорошо, это может вызвать непослушные побочные эффекты на других языках, таких как C и С++, поскольку PHP реализует его по-другому.

Ответ 4

Вы также можете добавить условие для второй переменной

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

Ответ 5

Чтобы расширить другие (правильные) ответы, то, что вы делаете, называется петлями вложенности. Это означает, что для каждой итерации внешнего цикла (первого) вы завершаете весь внутренний цикл. Это означает, что вместо 11 выходов вы получаете 11 + 11 + 11 + ... = 11 * 11 выходы

Ответ 6

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

Ответ 7

Я попытался получить начальное и конечное время и сохранить в базе данных, учитывая время начала и окончания, каждый цикл выполняется каждый раз, используя две переменные я & 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)
        ]);
   }