在PHP中的星号三角形

时间:2017-12-29 14:48:43

标签: php

我在php中创建一个三角形时遇到问题。这是我的代码。

for($i = 0; $i <= $input; $i++) {
    for($j = 1; $j <= $i; $j++) {
        echo " $char &nbsp";
    }
    echo "<br>";
}

结果就是这样。

*  
*   *  
*   *   *  
*   *   *   *  
*   *   *   *   *  

但我想做的就是这个。

                *  
            *   *  
        *   *   *  
    *   *   *   *  
*   *   *   *   *  

我的代码应该改变什么?

3 个答案:

答案 0 :(得分:1)

有一个本机PHP函数str_pad,您可以在其中说明如何在一个方向上填充字符串:STR_PAD_RIGHTSTR_PAD_BOTHSTR_PAD_LEFT

<?php
$char = '*'; // the character to print
$input = 10; // number of rows
$padding = STR_PAD_BOTH; // STR_PAD_RIGHT,  STR_PAD_BOTH , STR_PAD_LEFT

for($i = 0; $i <= $input; $i++) {
    $stars = '';
    for($j = 1; $j <= $i; $j++) {
        $stars .= " $char";
    }
    echo PHP_EOL . str_pad($stars, $input*2, ' ', $padding);
}

直播: https://eval.in/927835

此处使用了STR_PAD_BOTH

          *         
         * *        
        * * *       
       * * * *      
      * * * * *     
     * * * * * *    
    * * * * * * *   
   * * * * * * * *  
  * * * * * * * * * 
 * * * * * * * * * *

这里STR_PAD_LEFT

                   *
                 * *
               * * *
             * * * *
           * * * * *
         * * * * * *
       * * * * * * *
     * * * * * * * *
   * * * * * * * * *
 * * * * * * * * * *

答案 1 :(得分:0)

您必须确保空间打印的次数正确。

首先,我们将循环遍历所有空格,从1到$ input - $ i。在这里我们将打印出白色空间。然后我们将遍历astricks $ i次的数量。

注意:我们使用&amp; nbsp两次与astrick对齐

以下是代码

for($i = 0; $i <= $input; $i++) {
    for($j = 1; $j <= $input - $i; $j++) {
        echo " &nbsp&nbsp";
    }
    for($j = 1; $j <= $i; $j++) {
        echo " $char";
    }
    echo "<br>";
}

答案 2 :(得分:0)

分别创建主要字符串和“填充”字符串,然后回显连接结果:

$users = DB::connection('mysql2')->select(...);