如何使用PHP获得以下输出

时间:2015-11-10 15:55:49

标签: php algorithm for-loop

我的样本所需输出应为

1 2 3 4 5
2       4
3       3
4       2
5 4 3 2 1

这是我的PHP代码

for($i=1;$i <= 5;$i++) {
    for($j=1;$j<=$i;$j++) {
      echo "$j";
    }
    for($y=0;$y<(5-$i)*4;$y++) {
      echo '&nbsp;';
    }
    for($l=$i;$l>0;$l--) {
      echo "$l";
    }
    echo "<br/>";
}

但我得到了这个输出。

输出: -

1        1
12      21
123    321
1234  4321
1234554321

请尝试解决我的问题。提前谢谢。

3 个答案:

答案 0 :(得分:3)

for($i=1; $i<=5; $i++){
        echo $i." ";
    }
    echo "<br />";
    for($i=2; $i<=5; $i++){
        if($i==5){
            echo $i;
        }
        else{
            echo $i."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            if($i==2){
                echo (4)."<br />";
            }
            if($i==3){
                echo (3)."<br />";
            }
            if($i==4){
                echo (2)."<br />";
            }
        }
    }

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

@Mark是最好的解决方案,我想。

答案 1 :(得分:2)

以下是任意数组1个字符值的快速解决方案:

$values = range(1,7);
$count = count($values);
foreach($values as $k=>$v) {
   if($k == 0)
      echo implode(" ", $values), "\n";
   elseif($k == $count-1)
      echo implode(" ", array_reverse($values)), "\n";
   else
      echo $v, " ", str_repeat("  ", $count-2), $values[$count-1-$k], "\n";
}

这将产生:

1 2 3 4 5 6 7
2           6
3           5
4           4
5           3
6           2
7 6 5 4 3 2 1

答案 2 :(得分:1)

$count = 5;
$last = 0;
for ($i = 1; $i <= $count; $i++) {
    if($i == 1) {
        for ($x = 1; $x <= 5; $x++) {
            echo $x . ' ';
        }
        $last = $x;
    } elseif ($i == 5) {
        for ($b = 5; $b >= 1; $b--) {
            echo $b . ' ';
        }
    } else{
        for($c=1; $c <= 5; $c++) {
            if($c == 1) {
                echo $i . ' ';
            } elseif ($c == 5) {
                echo ($last - $i) . ' ' ;
            } else {
                echo '&nbsp;&nbsp;&nbsp;';
            }
        }
    }
    echo '<br>';
}