0

我需要这样写:

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

我想它一定是这样的

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

    echo $i . " ";

}
4

6 回答 6

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")
);
于 2013-05-27T15:24:33.097 回答
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

于 2013-05-27T15:19:26.340 回答
1
for ($x = 6; $x > 1; $x--) {
    for($y = $x; $y > 1; $y--) { 
        echo $y . " ";
    }
    echo "<br />";
}

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

于 2013-05-27T15:18:42.930 回答
1

这将做:

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

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

        echo $i . " ";

    }
    echo '<br>';
}
于 2013-05-27T15:25:34.347 回答
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>
于 2013-05-27T15:26:56.343 回答
0

你很亲密:)

尝试这个:

<?php

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

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

    echo PHP_EOL;

}
于 2013-05-27T15:18:56.137 回答