php打印一个边长为N的实心和空心菱型的方法
本文实例讲述了php打印一个边长为N的实心和空心菱型的方法。分享给大家供大家参考。具体分析如下:
实心菱型计算方法:
$n:边长
$i:当前行,0开始
$rows:总行数
上部
前面空格数=$n-$i-1
字符数=$i*2+1
下部
前面空格数=$i-$n+1
字符数=($rows-$i)*2-1
使用str_pad可以减少for/while等循环
/** *打印实心菱型 *@param int $n边长,默认5 *@param String$s显示的字符,默认* *@returnString */ functionsolidDiamond($n=5,$s='*'){ $str=''; //计算总行数 $rows=$n*2-1; //循环计算每行的* for($i=0;$i<$rows;$i++){ if($i<$n){//上部 $str.=str_pad('',($n-$i-1),'').str_pad('',$i*2+1,$s)."\r\n"; }else{ //下部 $str.=str_pad('',($i-$n+1),'').str_pad('',($rows-$i)*2-1,$s)."\r\n"; } } return$str; } echo'<xmp>'; echosolidDiamond(5); echo'</xmp>';
* *** ***** ******* ********* ******* ***** *** *
空心菱型计算方法:
$n:边长
$i:当前行,0开始
$rows:总行数
上部
前面空格数=$n-$i-1
空心的空格数=$i*2+1-2
字符数=$i*2+1-空心的空格数
下部
前面空格数=$i-$n+1
空心的空格数=($rows-$i)*2-1-2
字符数=($rows-$i)*2-1-空心的空格数
/** *打印空心菱型 *@param int $n边长,默认5 *@param String$s显示的字符,默认* *@returnString */ functionhollowDiamond($n=5,$s='*'){ $str=''; //计算总行数 $rows=$n*2-1; //循环计算每行的* for($i=0;$i<$rows;$i++){ if($i<$n){//上部 $tmp=$i*2+1; $str.=str_pad('',($n-$i-1),'').str_pad(str_pad('',$tmp-2,'',STR_PAD_BOTH),$tmp,$s,STR_PAD_BOTH)."\r\n"; }else{ //下部 $tmp=($rows-$i)*2-1; $str.=str_pad('',($i-$n+1),'').str_pad(str_pad('',$tmp-2,'',STR_PAD_BOTH),$tmp,$s,STR_PAD_BOTH)."\r\n"; } } return$str; } echo'<xmp>'; echohollowDiamond(5); echo'</xmp>';
* ** * * * * * * * * * * ** *
希望本文所述对大家的php程序设计有所帮助。