具有两个循环的简单算法

时间:2013-05-27 15:13:00

标签: php

我需要这样写:

6 5 4 3 2 
5 4 3 2 
4 3 2 
3 2 
2

我猜它必须像

一样
for ($i = 6; $i > 1; $i--) {

    echo $i . " ";

}

6 个答案:

答案 0 :(得分:7)

有一些PHP-Fu?

$s = 7;$e = 2;

for($i=$s;$i>$e;){
    echo implode(' ',range(--$i, $e)) . '<br>';
}

或:

for ($e = 2, $i = 5; $i--;
    print(implode(' ', range($e + $i, $e)) . "\n")
);

答案 1 :(得分:5)

您至少需要两个循环:

$max = 6;
$min = 2;

for ($num = $max; $num >= $min; $num--) {
  for ($i=$num; $i >= $min; $i--) {
    echo $i . ' ';
  }
  echo "\r\n";
}
  

6 5 4 3 2
5 4 3 2
4 3 2
3 2
2

键盘实时示例:http://codepad.org/FFvFPCwZ

答案 2 :(得分:1)

for ($x = 6; $x > 1; $x--) {
    for($y = $x; $y > 1; $y--) { 
        echo $y . " ";
    }
    echo "<br />";
}

未编译,未经测试且未经验证,但它应该可以正常工作。 :)

答案 3 :(得分:1)

这样做:

for($j = 6; $j > 1; $j--){

    for ($i = $j; $i > 1; $i--) {

        echo $i . " ";

    }
    echo '<br>';
}

答案 4 :(得分:1)

作为替代方案,您可能希望在1位数字的情况下做这样的事情,使用字符串而不是数字

$values = "65432"; // $values = join("", range(6, 2));
for($i = strlen($values); $i >= 1; $i--, $values = substr($values, 1)){
   echo $values . "<br>";
}

输出

65432<br>5432<br>432<br>32<br>2<br>

答案 5 :(得分:0)

你很亲密:)

试试这个:

<?php

for ($i = 6; $i > 1; $i--) {

echo $i . " ";
    for ($z=$i-1; $z>=2; $z--) {
      echo $z . " ";
    }

    echo PHP_EOL;

}