Итак, мой текущий куд:
<?php
$x=1;
while($x<=512)
{
echo $x.'<br>';
$x=$x*2;
}
while($x>=1)
{
echo $x.'<br>';
$x=$x/2;
}
?>
В результате получается следующее:
1
2
4
8
16
32
64
128
256
512
1024
512
256
128
64
32
16
8
4
2
1
Но то, что я пытаюсь сделать, - это сделать один цикл, связанный с целыми двумя циклами while, которые он сейчас находится. Мне было интересно, есть ли способ для обоих: Increment and Decrement внутри одного цикла в PHP? Если да, объясните, пожалуйста, с помощью фрагмента кода и объясните. Спасибо.
Это в значительной степени то, о чем я говорил. Тем не менее сохраняется часть цикла в то же самое, что и у вас. Просто увеличивайте/уменьшайте и сохраняйте вывод в другую переменную, чтобы позднее было эхо.
<?php
$x = 1;
$y = 1024;
$outputX = '';
$outputY = '';
while($x <= 512){
$outputX .= "{$x}<br>";
$outputY .= "{$y}<br>";
$x *= 2;
$y /=2;
}
echo $outputX;
echo $outputY;
//need to output the last value of $y because the loop misses the last iteration of the second while loop.
echo $y;
Проверьте, достигнут ли верхний предел. Если это так, выполните код деления.
$x=1;
$reverse = 0;
while($x<=1025 && $x>=1)
{
echo $x.'<br>';
if($x == 1024){ $reverse= 1;}
if($reverse == 0) {
$x=$x*2;
} else {
$x=$x/2;
}
}
Вы можете сделать это так, но я не вижу практичности этого.
$x=1;
$r=1048576;
while($x<=1048576){
if($x<=$r)
echo $x.'<br>';
else
echo $r.'<br>';
$x*=2;
$r/=2;
}