使用循环创建形状

时间:2018-11-03 13:23:02

标签: php loops for-loop shapes

我应该使用嵌套的for循环来创建此形状:https://imgur.com/a/prh6zwj

这是我目前拥有的:

 <?php
 for ($x = 1; $x <= 10; $x++){

      for ($y = 1; $y <= 6; $y++){
                    echo "Y";
      }
 }
?>

我不知道该怎么办。 预先感谢!

4 个答案:

答案 0 :(得分:1)

<?php
$position = 1;
for ($x = 1; $x <= 11; $x++){
    for ($y = 1; $y <= 6; $y++){
        if ($y == $position) {
            echo "Y";
        } else {
            echo "0";
        }
    }
    if ($x < 6) {
        $position++;
    } else {
        $position--;
    }
    echo "\n";
}

答案 1 :(得分:0)

 <?php
 $length = 6; // change this to change height width
 $pos = 0;
 for ($x = 1; $x <= (($length*2)-1); $x++){
    if($x <= $length)
    {$pos = $pos+1; }
    else
    {$pos = $pos-1; }
      for ($y = 1; $y <= $length; $y++){
                    if($y == $pos)
                    echo "Y";
                    else
                    echo "O";
      }
      echo "\n";
 }

答案 2 :(得分:0)

$k=2;                   // for calculating position from backside
for($i=1;$i<=11;$i++)    //for row
  {
   for($j=1;$j<=6;$j++)       //coloumn
    {
       if($j==$i && $i<=6)      //logic for printing "Y" till the end of row
           echo "Y";
       else if($i>6 && $j==($i-$k))    //logic for priniting "Y" in reversal order from the end of row
       {
          echo "Y";
          $k+=2;                       
       }
        else
          echo "O";                   // filling rest places with "O"
    }
   echo"\n";                             // jumping to new Row;
 }

希望您能轻松理解它。

答案 3 :(得分:0)

当我开始编程时,有很多可能的方法可以实现这一目标,我从不关心代码质量,而只关注输出。我添加了两个示例来帮助您更好地理解它!

<?php

//We have 6 columns & 11 rows so we need two loops one size of 11 and second size of 6
$counter = 1;
for ($i = 1; $i <= 11; $i++){
    for ($j = 1; $j <= 6; $j++){
        if ($j == $counter) {
            echo "Y";
        } else {
            echo "O";
        }
    }
    if ($i < 6) {
        $counter++;
    } else {
        $counter--;
    }
    echo "<br/>";
}

echo "**************************** METHOD TWO ****************************";
//Following is not efficient But its also printing the same results
for ($i = 0 ; $i < 66 ; $i++){

    if($i == 65)
    {
        echo "O";
        break;
    }
    if($i % 6 == 0){
        echo "<br/>";
    }
    if($i <= 36)
    {
        if ($i % 7 == 0){
            echo "Y";
        }else{
            echo "O";
        }
    }else{
        if ($i % 5 == 0){
            echo "Y";
        }else{
            echo "O";
        }
    }
}
?>