希望我能把它颠倒过来:PHP编程

时间:2014-09-16 10:25:07

标签: php

这就是我所做的。它变成了

              1
             121
            12321
           1234321

但我希望我能得到

           1234321
            12321
             121
              1

我已经尝试了很多次,但我无法做到这一点。有谁可以帮忙?

我犯了一些错误吗?

<?php
$p=4;
for($x=1;$x<=$p;$x++)
{
    for($q=$p;$q>$x;$q--)
    {
      echo "<center>";
    }
    for($k=1;$k<$x;$k++) 
    {
      echo $k;
    }
    if($x>=1) 
    {
        for($v=$x; $v>=1; $v--)
        {
           echo $v;
        }
    }      
echo "<br>";
}
?> 

如果你能告诉我我的错误,我将不胜感激。 谢谢

4 个答案:

答案 0 :(得分:1)

您的方法是正确的,只需稍微更新,也可以反转第一个for限制,从循环内删除echo "<center>";并将其放在外面

<?php
$p=4;
echo "<center>";
for($x=$p;$x>0;$x--)
{
    /* for($q=$p;$q>$x;$q--)
    {                                  //Not at all needed
      echo "<center>";
    } */
    for($k=1;$k<$x;$k++) 
    {
      echo $k;
    }
    if($x>=1) 
    {
        for($v=$x; $v>=1; $v--)
        {
           echo $v;
        }
    }      
echo "<br>";
}
echo "</center>";

答案 1 :(得分:1)

或者更简单的方法:

$max = 4;

echo "<center>";
while ($max >= 1) {
    $string = '';
    for ($current = 1; $current <= $max; $current++) {
        $string .= $current;
    }
    echo $string . strrev(substr($string, 0, -1));
    echo '<br>';
    $max--;
}
echo "</center>";

答案 2 :(得分:0)

试试这个:

echo '<center>';
$p=4;
for($x=4;$x>0;$x--)
{

for($k=1;$k<$x;$k++) 
{
  echo $k;
}
if($x>=1) 
{
    for($v=$x; $v>=1; $v--)
    {
       echo $v;
    }
}    

echo "<br>";
}
echo '</center>';

答案 3 :(得分:0)

这是您需要的功能:

function printCenterNb($nb, $html = true) {
    if ($html)
        echo '<center>';
    for($i = $nb; $i > 0; $i--) {
        for($i2 = 1; $i2 < $i; $i2++)
          echo $i2;
        for($i2 = $i; $i2>=1; $i2--)
           echo $i2;
        if ($html)
            echo "<br>";
    }
    if ($html)
        echo '</center>';
}

printCenterNb(5);