php菱形,PHP 打印菱形

1,菱形

*

***

*****

*******

*********

*******

*****

***

*

示例

$n = 5;

for($i = 1;$i <= $n;$i++) {

for($k = 1;$k <= $n - $i;$k++) {

echo "&nbsp";

}

for($j = 1;$j <= ($i-1) * 2 + 1;$j++) {

echo "*";

}

echo "
";

}

for($i = $n - 1;$i >= 1;$i--) {

for($k = 1;$k <= $n - $i;$k++) {

echo "&nbsp";

}

for($j = 1;$j <= ($i-1) * 2 + 1;$j++) {

echo "*";

}

echo "
";

}

?>

2,空心菱形

*

* *

* *

* *

* *

* *

* *

* *

*

示例一

$n = 5;

for($i = 1;$i <= $n;$i++) {

for($k = 1;$k <= $n - $i;$k++) {

echo "&nbsp";

}

for($j = 1;$j <= ($i-1) * 2 + 1;$j++) {

if($i == 1){

echo "*";

}elseif($j == 1 or $j == ($i-1) * 2 + 1){

echo "*";

}else{

echo "&nbsp";

}

}

echo "
";

}

for($i = $n - 1;$i >= 1;$i--) {

for($k = 1;$k <= $n - $i;$k++) {

echo "&nbsp";

}

for($j = 1;$j <= ($i-1) * 2 + 1;$j++) {

if($i == 1){

echo "*";

}elseif($j == 1 or $j == ($i-1) * 2 + 1){

echo "*";

}else{

echo "&nbsp";

}

}

echo "
";

}

?>

示例二

// 打印空心菱形

$n = 8;

for($i = 1;$i <= 2 * $n-1;$i++) { // 外层for控制金字塔的层数

// 在打印*前先打印空格

if ($i <= $n) {

for($k = 1;$k <= $n + 1 - $i;$k++) {

echo "&nbsp";

}

// 能内层for控制每层*的个数

for($j = 1;$j <= 2 * $i-1;$j++) {

if ($i == 1) {

echo '*';

} else {

if ($j == 1 || $j == 2 * $i-1) {

echo '*';

} else {

echo '&nbsp';

}

}

}

} else { // 问题出现在这个else里

for($k = 1;$k <= $i - $n + 1;$k++) { // 这里$k <= $i-$n 应该为$k<=$i-$n+1

echo '&nbsp';

}

for($j = 1;$j <= 2 * (2 * $n - $i)-1;$j++) {

if ($i == 2 * $n-1) { // 你的这里少了一个等于号,所以$i变成了常数 $i = 17

echo '*';

} else {

if ($j == 1 || $j == 2 * (2 * $n - $i)-1) {

echo '*';

} else {

echo '&nbsp';

}

}

}

}

echo '
';

}

?>

示例三

function print_diamond($line, $flag = '*', $space = ' ', $end = '
') {

$diamond = make_diamond_array($line);

$total = $line * 2 - 1;

for($i = 1; $i <= $total; $i++) {

for($j = 1; $j <= $total; $j++) {

if(!empty($diamond[$i][$j])) {

echo $flag;

}else{

echo $space;

}

}

echo $end;

}

}

function make_diamond_array($line) {

$line = intval($line);

$diamond = array();

for($i = 1; $i <= $line; $i++) {

$diamond[$i] = $diamond[$line * 2 - $i] = array(($line - $i + 1) => true, ($line + $i - 1) => true);

}

return $diamond;

}

print_diamond(6);

?>

示例四

// 打印空心菱形

$n = 6; // 共有 2*$n + 1 层

for($i = 1;$i <= 2 * $n + 1;$i++) { // 循环所有层

for($j = 1;$j <= 2 * $n + 1;$j++) { // 循环所有列,把菱形想成正方形

if ($i <= $n + 1) { // 上面$n+1层

if ($j == $n - $i + 2 || $j == $n + $i) { // 上面n+1层 前面那个*坐标为 $n-$i+2 后面那个为$n+$i

echo "*";

} else {

echo " ";

}

} else { // 下面$n层

if ($j == $i - $n || $j == 3 * $n - $i + 2) { // 下面层,前面那个*坐标为 $i-$n 后面为 3*$n-$i+2

echo "*";

} else {

echo " ";

}

}

}

echo '
';

}

?>

示例五

// 打印空心菱形

$n = 6; // 共有 2*$n + 1 层

for($i = 1;$i <= 2 * $n + 1;$i++) { // 循环所有层

for($j = 1;$j <= 2 * $n + 1;$j++) { // 循环所有列,把菱形想成正方形

if ($j == $n - $i + 2 || $j == $n + $i || $j == $i - $n || $j == 3 * $n - $i + 2) {

echo "*";

} else {

echo " ";

}

}

echo '
';

}

?>

示例六

function diamond($n=3){

if($n==1){ echo '*'; return; }

for($i=0,$rows=($n*2)-1; $i

if($i<=$rows/2){

$tmp = ($i*2)+1;

echo str_pad('',($rows-$tmp)/2,' ',STR_PAD_LEFT).str_pad(str_pad('',$tmp-2,' ',STR_PAD_BOTH),$tmp,'*',STR_PAD_BOTH)."\r\n";

}else{

$tmp = ($rows/2-($i-$rows/2+1))*2+1;

echo str_pad('',((($i*2)+1)-$rows)/2,' ',STR_PAD_LEFT).str_pad(str_pad('',$tmp-2,' ',STR_PAD_BOTH),$tmp,'*',STR_PAD_BOTH)."\r\n";

}

}

}

echo '

';

diamond(5);

echo '

';

?>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值