如何编写一个嵌套的php循环,用几行代码绘制图像?

时间:2017-05-08 20:39:07

标签: php

如何以最少的代码解决这个问题,以下是问题

*****

****x

***xx

**xxx

*****

**xxx

***xx

****x

*****

这是我想改进的代码:

<?php


   for ($i=0; $i < 5 ; $i++) { 
      if($i >= 1 & ($i <= 3))
      {
        for ($t=0; $t < 5-$i ; $t++)  
         echo "*";
        for ($t=0; $t < $i ; $t++) 
          echo "x";
      }

    else
       for ($j=0; $j < 5 ; $j++) 
        echo "*";
    echo "<br/>";
 }

    for ($f=1; $f < 5 ; $f++) { 
      for ($j=0; $j < $f+1; $j++) 
         echo "*";
      for ($v=3; $v>= $f; $v--) 
         echo "x";
             echo "<br/>";

     }
?>

1 个答案:

答案 0 :(得分:1)

要创建带有重复符号的字符串,您可以使用str_repeat。使用此功能,您的代码可以简化为:

$num = 5;
for ($i = $num; $i > 1; $i--) {
    echo str_repeat('*', $i) . str_repeat('x', $num - $i) . PHP_EOL;
}

echo str_repeat('*', $num) . PHP_EOL;

for ($i = 2; $i <= $num; $i++) {
    echo str_repeat('*', $i) . str_repeat('x', $num - $i) . PHP_EOL;
}

即使您不能使用php核心功能,也可以编写自己的函数来创建与str_repeat相同的结果:

function createLine($starsCount, $XCount) {
    $result = '';

    for ($i = 0; $i < $starsCount; $i++) {
        $result .= '*';
    }
    for ($i = 0; $i < $XCount; $i++) {
        $result .= 'x';
    }

    return $result;
}

并将代码重写为:

$num = 5;
for ($i = $num; $i > 1; $i--) {
    echo createLine($i, $num - $i) . PHP_EOL;
}

echo createLine($num, 0) . PHP_EOL;

for ($i = 2; $i <= $num; $i++) {
    echo createLine($i, $num - $i) . PHP_EOL;
}