首页 > 解决方案 > 如何镜像使用嵌套 for 循环制作的这个三角形

问题描述

如何镜像这个用嵌套 for 循环制作的三角形?

for($x=0; $x<10; $x++) { //down
  echo '<br>';
  for($y=0; $y<$x; $y++) {
    echo '*';
  }
}

我已经设法做到了,但我无法理解

for($x=1;$x<8;$x++){
    for($y=8;$y>=$x;$y--){
        echo"&nbsp;&nbsp;&nbsp;";
    }
    for($z=1;$z<=$x;$z++){
        echo"* ";
    }
echo"<br>";
}

标签: php

解决方案


我将重写你的第一个变量以使用一些变量,希望这些变量对我们将要介绍的更改更有意义。他们没有错,这只是帮助(至少我)考虑一下。此外,我使用的是换行符而不是 HTML <br />,而不是空格,我使用的是加号,而不是星号,我使用的是井号,只是为了让正在发生的事情变得明显。

第一个例子

const LINES = 10;

for ($rows = 0; $rows <= LINES; $rows++) {
    for ($stars = 0; $stars <= $rows; $stars++) {
        echo '#';
    }
    echo PHP_EOL;
}

结果

#
##
###
####
#####
######
#######
########
#########
##########
###########

此处演示:https ://3v4l.org/YpYvS

第二个示例 - 右侧的额外空格

这个例子和上面一样,但是我在星号的末尾添加了一些额外的空白。结果看起来与之前的相同,但是如果您选择文本,您将看到这些空格。

const LINES = 10;

for ($rows = 0; $rows <= LINES; $rows++) {
    for ($stars = 0; $stars <= $rows; $stars++) {
        echo '#';
    }
    for ($spaces = LINES; $spaces >= $rows; $spaces--) {
        echo "+";
    }
    echo PHP_EOL;
}

结果

#+++++++++++
##++++++++++
###+++++++++
####++++++++
#####+++++++
######++++++
#######+++++
########++++
#########+++
##########++
###########+

此处演示:https ://3v4l.org/DG34B

第三个例子——镜像

为了反映这一点,我们只需要在星星之前移动空格(在我的例子中是加号),所以只需交换内部循环的顺序:

const LINES = 10;

for ($rows = 0; $rows <= LINES; $rows++) {
    for ($spaces = LINES; $spaces >= $rows; $spaces--) {
        echo "+";
    }
    for ($stars = 0; $stars <= $rows; $stars++) {
        echo '#';
    }
    echo PHP_EOL;
}

结果

+++++++++++#
++++++++++##
+++++++++###
++++++++####
+++++++#####
++++++######
+++++#######
++++########
+++#########
++##########
+###########

此处演示:https ://3v4l.org/H25Bf

第四个例子——双方

如果你想展示金字塔的两面,你可以不停地复制东西

const LINES = 10;

for ($rows = 0; $rows <= LINES; $rows++) {
    for ($spaces = LINES; $spaces >= $rows; $spaces--) {
        echo "+";
    }
    for ($stars = 0; $stars <= $rows; $stars++) {
        echo '#';
    }
    for ($stars = 0; $stars <= $rows; $stars++) {
        echo '#';
    }
    for ($spaces = LINES; $spaces >= $rows; $spaces--) {
        echo "+";
    }
    echo PHP_EOL;
}

结果

+++++++++++##+++++++++++
++++++++++####++++++++++
+++++++++######+++++++++
++++++++########++++++++
+++++++##########+++++++
++++++############++++++
+++++##############+++++
++++################++++
+++##################+++
++####################++
+######################+

此处演示:https ://3v4l.org/E1oqK


推荐阅读