时间:2021-07-01 10:21:17 帮助过:28人阅读
实心菱型计算方法:
$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 显示的字符, 默认* * @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), ' '). str_pad('', ($rows-$i)*2-1, $s). "\r\n"; } } return $str; } echo ''; echo solidDiamond(5); echo ' ';
* *** ***** ******* ********* ******* ***** *** *
/** * 打印空心菱型 * @param int $n 边长,默认5 * @param String $s 显示的字符, 默认* * @return String */ function hollowDiamond($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 ''; echo hollowDiamond(5); echo ' ';
* * * * * * * * * * * * * * * *
以上就介绍了php 打印一个边长为N的实心和空心菱型,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。