为了账号安全,请及时绑定邮箱和手机立即绑定

for循环正方形 我想把这个正方形镂空成这样,但是逻辑找不到了,莫得思路呀,哪位神仙提点下

/ 猿问

for循环正方形 我想把这个正方形镂空成这样,但是逻辑找不到了,莫得思路呀,哪位神仙提点下

     田 田  田 田 田
     田      田      田
     田 田 田  田 田
     田      田      田
     田 田  田 田 田

$n=5;
    for($i=1;$i<=$n;$i++){
        for($k=$n-1;$k>=0;$k--){
                echo "田";
        }
        echo "</br>";
    }

查看完整描述

1 回答

?
pardon110

你可以考虑写字的思路,从左到右,从上到下,观察发现实行三行,首中尾,中上行皆为镂空,中下行亦是,因此可以这样做。

$n = 5;
// 实行
$solid= str_repeat(1,$n);
// 虚行
$space = str_repeat(0,$n);
$space[0]=1;
$space[$n-1]=1;
$space[intval($n/2)]=1;
$fmt = "{$solid}\n{$space}\n{$solid}\n{$space}\n{$solid}\n";

输出效果如下

// 控制台输出
echo str_replace(["1","0"],['田',' '],$fmt);
// html浏览器输出
echo str_replace(["1","0"],['田',' '],nl2br($fmt))
田田田田田
田  田  田
田田田田田
田  田  田
田田田田田
田田田田田<br />
田  田  田<br />
田田田田田<br />
田  田  田<br />
田田田田田<br />


查看完整回答
1 反对 回复 2019-07-20
  • _6两颗星星红红的9_
    _6两颗星星红红的9_
    蟹蟹你,但是我的初衷是想用循环写~,虽然这个方法结果是一样,但是和我的这个思路不太相同,你对这个循环有什么思路吗~嘿嘿~~
  • pardon110
    pardon110
    5*5数组,这几个[1][1],[1][3],[3][1],[3][3]索引输出为空,其它每个元素输出“田”字即可
  • pardon110
    pardon110
    for($i=0;$i<5;$i++){ for($j=0;$j<5;$j++){ if(($i==1|| $i==3) && ($j==1 || $j==3)){ echo ' '; }else{ echo '田'; } } echo '<br>'; }

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信