php 以两个三角形的形状打印文本

scyqe7ek  于 2023-09-29  发布在  PHP
关注(0)|答案(5)|浏览(99)

我只是PHP的初学者。我正在尝试写程序来打印数字如下。
我写了下面的代码。

<?php

$n=5;
for($i=1; $i<=$n; $i++)
{
    echo "<br />";
    for($j=1; $j<=$i; $j++)
    {
        echo $j;
    }
}

?>

结果显示如下。

1
12
123
1234
12345

我无法逆转

1
   21
  321
 4321
54321

我该怎么做?

lsmd5eda

lsmd5eda1#

好吧。你写的很好。需要做一些改变才能做你想要的。第一个问题是您要将其呈现为HTML -而HTML不呈现空格(我们将需要空格)。两种解决方案:你可以使用&nbsp;来表示空间,并确保使用比例字体,或者将所有内容 Package 到<pre>标签中以实现几乎相同的功能。所以,echo "<pre>";在开始,echo "</pre>";在结束。
接下来-不要让内部循环转到$i。让它每次都变成5,如果$j <= $i,则打印一个数字,否则打印一个空格。
然后,在这个循环的旁边,做另一个循环,但是反过来(从5开始,以1结束),但是做同样的事情。
中提琴是一种乐器。

6qftjkof

6qftjkof2#

更通用的解决方案:

<?php
$n = 5;
$seq1 = '';
$seq2 = '';
$format1 = sprintf("%%-%su", $n); //right justified with spaces
$format2 = sprintf("%%%su", $n); //left justified with spaces

for($i=1; $i<=$n;$i++){
  $seq1 .= $i;
  $seq2 = strrev($seq1);
  echo sprintf("$format1$format2\n", $seq1, $seq2);
}
mnemlml8

mnemlml83#

这是我对你的问题的解决方案。
这不是最好的解决方案,因为它没有考虑到您可能使用大于9的数字,在这种情况下,它会使数字彼此不一致。
但关键是,它仍然是一个解决方案的开始,如果需要,您可以继续工作。
您可以使用array存储要打印的数字。因为数字是在array中,这意味着我们可以使用foreach循环来确保所有数字都被打印出来。
您可以使用PHP的str_repeat()函数来计算每个数字字符串之间需要插入多少个空格。下面的解决方案将只工作,如果你使用一个数组与默认的数字indicies,而不是一个关联数组。这是因为它在str_repeat()函数的部分计算中使用了$key变量。如果你不想使用$key变量,那么你应该能够弄清楚如何改变它。
当需要反转数字时,它们已经存储在字符串中,因此您可以使用PHP的strrev()函数来处理并将其存储在另一个变量中。
最后,你只需要在文档中打印一行,并在末尾换行。
请注意,str_repeat()函数重复&nbsp; HTML实体。这是因为浏览器只会将正常白色压缩到1个字符。
另外请注意,我已经包含了一个style块来将字体更改为monospace。这是为了确保所有数字都彼此对齐。

<style>
    html, body {
        font: 1em monospace;
    }
</style>
<?php
$numbers = array(1, 2, 3, 4, 5);
$numbers_length = count($numbers);
$print_numbers = '';
$print_numbers_rev = '';

foreach($numbers as $key => $value) {
    $spaces = str_repeat('&nbsp;', ($numbers_length - ($key + 1)) * 2);
    $print_numbers .= $value;
    $print_numbers_rev = strrev($print_numbers);

    echo $print_numbers . $spaces . $print_numbers_rev . '<br />';
}

编辑:

无阵列的解决方案:

<style>
    html, body {
        font: 1em monospace;
    }
</style>
<?php
$numbers = 9;
$numbers_length = $numbers + 1;
$print_numbers = '';
$print_numbers_rev = '';

for($i = 0; $i <= $numbers; ++$i) {
    $spaces = str_repeat('&nbsp;', ($numbers_length - ($i + 1)) * 2);
    $print_numbers .= $i;
    $print_numbers_rev = strrev($print_numbers);

    echo $print_numbers . $spaces . $print_numbers_rev . '<br />';
}
8wigbo56

8wigbo564#

$n = 5;

for ($i = 1; $i <= $n; $i++) {
 $counter .= $i;
 $spaces = str_repeat("&nbsp;", ($n-$i)*2);  
 echo $counter . $spaces . strrev($counter) . "<br/>";
}
i86rm4rw

i86rm4rw5#

<div style="position:relative;width:100px;height:auto;text-align:right;float:left;">
<?php

$n=5;
for($i=1; $i<=$n; $i++)
{
    echo "<br />";
    for($j=1; $j<=$i; $j++)
    {
        echo $j;
    }
}

?>
</div>

相关问题