我想使用没有嵌套循环的循环来打印:
1
2 3
4 5 6 7
8 9 10 11 12 13 14 15
答案 0 :(得分:3)
一对计数器应该可以做到这一点;
$threshold = 1;
$x = 1;
for($i = 1; $i <= 15; $i++) {
echo $i . ' ';
if($x == $threshold) {
echo "<br>\n";
$threshold = $threshold * 2;
$x = 0;
}
$x++;
}
继续工作到无穷大,或者你的脚本内存不足。无论先发生什么:)
答案 1 :(得分:1)
您可以使用单个while和一些数组函数来实现。试试这个。
<?php
$start=1;
while($start<=10){
$array = range($start,($start+$start-1));
echo implode(' ',$array)."<br>";
$start=$start*2;
}
?>
答案 2 :(得分:0)
这样的事情?
$i=1;
$t=1;
while($i<1000)
{
if($i==$t)
{
if($t!=1) echo "<br />";
$t=$t*2;
}
echo $i." ";
$i++;
}
答案 3 :(得分:0)
您甚至可以在没有任何for
和一些递归的情况下执行此操作; - )
<?php
$elements = range(1,15);
display($elements);
function display(array $parts, $step = 1) {
if(! count($parts)) {
return;
}
$elements = array_splice($parts, 0, $step);
echo implode("\t", $elements)."\n";
display($parts, $step * 2);
}
上的工作代码
答案 4 :(得分:0)
同样的事情,但有log($ i,2)。
<?php
$i=1;
while($i<20)
{
echo $i;
$i++;
if(filter_var(log($i,2), FILTER_VALIDATE_INT))
echo PHP_EOL;
else
echo "\t";
}