PHP循环遍历倒金字塔

翻出几个月前学php的时候,自己写的 倒金字塔,楞是看了1个多钟才看明白。还郁闷当时怎么写出来的,原来是有规律的,现在又把代码精炼了下,记下来。代码这东西,真就是怕忘-_-!!!

代码:

<?php

function a($n){
    $p = ($n+1)/2;        //计算最中间的行号
    for($i=1;$i<=$n;$i++){
        if($i<$p){    //遍历上半部分
            $m = 2*$i-1;        //上半部分:每行*号个数
            $sp = ($n-$m)/2;    //空格数的一半
            $i1 = $m;        //星号数
            for($j=1;$j<=$sp;$j++){echo "&nbsp;";}                    //空格
            for($j=1;$j<=$i1;$j++){echo "*";}        //打印*号
            for($j=1;$j<=$sp;$j++){echo "&nbsp;";}                    //空格
            echo "<br />";    
        }else{
                if($i==$p){        //遍历中间行:中间的个数刚好等于行数
                    for($j=1;$j<=$n;$j++){echo "*";}        //打印*号
                    echo "<br />";
                }
                else{                //遍历下半部分
                    $i2 = 2*($n+1-$i)-1;    //*号数 (有规律的-对称)
                    $sp = ($n -$i2)/2;    //空格数的一半
                    for($j=1;$j<=$sp;$j++){echo "&nbsp;";}                    //空格
                    for($j=1;$j<=$i2;$j++){echo "*";}                //打印*号
                    for($j=1;$j<=$sp;$j++){echo "&nbsp;";}                    //空格
                    echo "<br />";    
                }
        }
    }
}
a(9);
?>

猜你喜欢

转载自blog.csdn.net/u014286164/article/details/48209247
今日推荐