php打印一个边长为N的实心和空心菱型的方法

 更新时间:2015年03月02日 10:22:38   作者:傲雪星枫  
这篇文章主要介绍了php打印一个边长为N的实心和空心菱型的方法,实例分析了php循环语句绘制图形的技巧,需要的朋友可以参考下

本文实例讲述了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 显示的字符, 默认*
 * @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 '<xmp>'; 
echo solidDiamond(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 显示的字符, 默认*
 * @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 '<xmp>'; 
echo hollowDiamond(5); 
echo '</xmp>';

复制代码 代码如下:
    * 
   * * 
  *   * 
 *     * 
*       * 
 *     * 
  *   * 
   * * 
    *

希望本文所述对大家的php程序设计有所帮助。

相关文章

  • PHP通过引用传递参数用法分析

    PHP通过引用传递参数用法分析

    这篇文章主要介绍了PHP通过引用传递参数用法,结合具体实例分析了php函数参数中使用引用进行参数传递的功能与操作技巧,需要的朋友可以参考下
    2016-12-12
  • PHP 弱引用的相关总结

    PHP 弱引用的相关总结

    这篇文章主要介绍了PHP 弱引用的相关总结,帮助大家更好的理解和学习使用PHP,感兴趣的朋友可以了解下
    2021-05-05
  • PHPExcel合并与拆分单元格的方法

    PHPExcel合并与拆分单元格的方法

    这篇文章主要介绍了PHPExcel合并与拆分单元格的方法,涉及PHPExcel中setCellValue与mergeCells方法的使用技巧,需要的朋友可以参考下
    2016-07-07
  • PHP Cookie学习笔记

    PHP Cookie学习笔记

    这篇文章主要为大家分享了PHP Cookie学习笔记,告诉大家什么是Cookie,Cookie的功能有哪些? 如何创建、读取、删除Cookie,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • php中的观察者模式

    php中的观察者模式

    可以粗略的理解为,一个类(我们称之为被观察者),这个类继承了一个被观察者容器的借口
    2010-03-03
  • php读取mysql中文数据出现乱码的解决方法

    php读取mysql中文数据出现乱码的解决方法

    以下是对php读取mysql中文数据出现乱码问题的解决方法进行了介绍,需要的朋友可以过来参考下
    2013-08-08
  • 初级的用php写的采集程序

    初级的用php写的采集程序

    这篇文章主要介绍了初级的用php写的采集程序
    2007-03-03
  • 详解PHP中数组函数的巧用

    详解PHP中数组函数的巧用

    PHP 的数组是一种很强大的数据类型,与此同时 PHP 内置了一系列与数组相关的函数可以很轻易的实现日常开发的功能。所以本文便总结了一些在常见场景中利用 PHP 内置函数的实现方法,希望对你有所帮助
    2022-09-09
  • php实现的微信分享到朋友圈并记录分享次数功能

    php实现的微信分享到朋友圈并记录分享次数功能

    这篇文章主要介绍了php实现的微信分享到朋友圈并记录分享次数功能,结合实例形式分析了php微信分享功能接口调用及分享次数统计具体操作技巧,需要的朋友可以参考下
    2018-01-01
  • PHP实现生成带背景的图形验证码功能

    PHP实现生成带背景的图形验证码功能

    这篇文章主要介绍了PHP实现生成带背景的图形验证码功能,结合实例形式详细分析了php生成带背景的图形验证码操作相关步骤与操作技巧,需要的朋友可以参考下
    2016-10-10

最新评论