显示每行的第一个和最后一个数字为1的模式

时间:2018-02-22 13:18:37

标签: php loops for-loop

我正在尝试使用for循环来制作看起来像钻石形状的形状。

<?php
    for($i=0;$i<=9;$i++){
        for ($d=10-$i; $d > 0; $d--)  {
            echo "&nbsp;&nbsp;";
        }
        for($j=1;$j<=$i;$j++){
            echo "&nbsp;".$i."&nbsp;";
        }
        echo "<br>";
    }
    for($i=8;$i>=1;$i--){
        for ($d=0; $d <= 9-$i; $d++)  {
            echo  "&nbsp;&nbsp;";
        }
        for($j=$i;$j>=1;$j--){
            echo "&nbsp;".$i."&nbsp;";
        }
        echo "<br>";
    }

?>

它看起来像什么:

enter image description here

我想要的是什么:

enter image description here

我需要帮助。 谢谢

2 个答案:

答案 0 :(得分:1)

我会在这里发布,因为我很开心。感觉像是再次学习基础知识。

<?php
$max_size = 9;

function createSpaces($n){
    $spaces = '';
    for($i = 0; $i < $n; $i++){
        $spaces .= ' '; //change to '&nbsp;' for HTML
    }
    return $spaces;
}
function createRows($i, $max_size){
    $row = '';
    $row .= createSpaces($max_size - $i);
    for($j = 1; $j <= ($i-1); $j++){
        $row .= $j;
    }
    for($k = $i; $k >= 1; $k--){
        $row .= $k;
    }

    $row .= createSpaces($max_size - $i);
    echo $row . PHP_EOL; //change PHP_EOL to '<br>' for HTML
}
for($i = 1; $i <= $max_size; $i++)
{
    createRows($i, $max_size);
}
for($i = ($max_size - 1); $i >= 1; $i--)
{
    createRows($i, $max_size);
}

Javascript版本:

&#13;
&#13;
var max_size = 9;

function createSpaces(x) {
  var spaces = '';
  for (var i = 0; i < x; i++) {
    spaces += '&nbsp;';
  }
  return spaces;
}

function createRow(i, max_size) {
  var row = '';
  row += createSpaces(max_size - i);
  for (var j = 1; j <= (i - 1); j++) {
    row += j;
  }
  for (var k = i; k >= 1; k--) {
    row += k;
  }

  row += createSpaces(max_size - i);
  document.write(row + '<br>');
}

for (var i = 1; i <= max_size; i++) {
  createRow(i, max_size)
}
for (var i = (max_size - 1); i >= 1; i--) {
  createRow(i, max_size)
}
&#13;
<style>
  body {
    font-family: monospace;
  }
</style>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这是一个类似的版本,您只需要调用一次该函数。

function diamond($max){
  $result = '<p style="text-align:center">';
  $last = 0;
  for($i=1;$i<=$max;$i++){
    for($x=1;$x<=$i;$x++){
      $last=$x;
      $result .= $last;
    }
    for($y=$last-1;$y>=1;$y--){
      $result .= $y;
    }
    $result .= "<br />";
  }
  for($i=$max-1;$i>=1;$i--){
    for($x=1;$x<=$i;$x++){
      $last=$x;
      $result .= $last;
    }
    for($y=$last-1;$y>=1;$y--){
      $result .= $y;
    }
    $result .= "<br />";
  }
  $result .= "</p>";
  return $result;
}

echo diamond(9);
echo diamond(7);
echo diamond(10);