本文实例讲述了PHP打印一个边长为N的实心和空心菱型的方法。分享给大家供大家参考。具体分析如下:
实心菱型计算方法: $n:边长 $i:当前行,0开始 $rows:总行数
上部 前面空格数=$n-$i-1 字符数=$i*2+1
下部 前面空格数=$i-$n+1 字符数=($rows-$i)*2-1
使用 str_pad 可以减少for/while等循环
代码如下:
显示的字符,默认*
* @return String
*/
function solidDiamond($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),($rows-$i)*2-1,$s). "\r\n";
}
}
return $str;
}
echo '';
echo solidDiamond(5);
echo ' ';
代码如下: