【问题标题】:Not getting output as expected in printing star pattern in php在php中打印星形图案时未按预期获得输出
【发布时间】:2016-10-10 13:19:53
【问题描述】:

我已经尝试过这段代码,我得到的输出在这里

<?php
    for($i=1;$i<=5;$i++){
        for($j=5-$i;$j>=1;$j--){
            echo "&nbsp;";
            echo "&nbsp;";
        }
        for($k=1;$k<=$i;$k++){
            echo $i;
        }
        echo "<br/>";
    }
     ?>
      1
     22
    333
   4444
  55555

但是我想要这样的输出,请告诉我哪里错了

    1
   12
  123 
 1234
12345

【问题讨论】:

  • 你应该发布一些代码。
  • 使用这个 for 循环:for($k=1;$k&lt;=$i;$k++){ echo $i; } 并用一些示例数字替换变量,然后拿一张纸写下每次迭代得到的结果。
  • 这看起来很像家庭作业——你应该自己做。
  • 请帮我做作业,如果你想那么多@FranzGleichmann

标签: php for-loop


【解决方案1】:

只需将 echo $i 更改为 echo $k,

for($k=1;$k<=$i;$k++){
    echo $k;
}

【讨论】:

  • 感谢@Yuva Raj,它起作用了,如果我想打印类似金字塔的简单图案,代码会保持不变,我只需要更改空格,请告诉我。
【解决方案2】:

由于您使用 HTML,您可能希望将此逻辑包装到一个函数中,该函数可以让您选择要显示的行数。您可以根据 CSS 对其进行调整以满足您的需求:

function numberTriangle($endNumber, $align_text = 'right') {
    $max    = intval($endNumber);
    $align  = strval($align_text);
    $align  = ( strlen(trim($align)) > 0 ) ? $align : 'right';

    echo "<div style='text-align : $align; display : inline-block'>";

    if( $max > 0 ) {
        for( $i = 1; $i < $max + 1; $i++ ) {
            for( $j = 1; $j < $i + 1; $j++ ) {
                echo $j;
            }

            echo '<br />';
        }
    }

    echo '</div>';
}

numberTriangle(5);

// Will display :
/*
    1
   12
  123
 1234
12345
*/

多亏了这个功能,您不必再手动添加空格,这样更简洁(并且可以让您省去头痛!)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多