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中jQuery插件autocomplate的简单使用笔记

    php中jQuery插件autocomplate的简单使用笔记

    刚接触jQuery,时间不太长,以下文章只限于参考使用。查了一部分资料,最后终于写成功了,只是单纯的实现,其它的特殊用法还没有进行深入研究,简单贴出来,希望可以给新手一个参考
    2012-06-06
  • PHP中的traits实现代码复用使用实例

    PHP中的traits实现代码复用使用实例

    这篇文章主要介绍了PHP中的traits实现代码复用使用实例,本文讲解了Trait简单使用、优先级问题、多个Trait冲突问题、as可用来修改方法访问控制、Trait中使用Trait等内容,需要的朋友可以参考下
    2015-05-05
  • 通过PHP实现获取访问用户IP

    通过PHP实现获取访问用户IP

    这篇文章主要介绍了通过PHP实现获取访问用户IP,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 使用Curl进行抓取远程内容时url中文编码问题示例探讨

    使用Curl进行抓取远程内容时url中文编码问题示例探讨

    在编码时应该只对部分URL编码,否则URL中的冒号和反斜杠也会被转义,下面有两个不错的示例,有类似情况的朋友可以感受下
    2013-10-10
  • php将从数据库中获得的数据转换成json格式并输出的方法

    php将从数据库中获得的数据转换成json格式并输出的方法

    今天小编就为大家分享一篇php将从数据库中获得的数据转换成json格式并输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 浅谈PHP中JSON数据操作

    浅谈PHP中JSON数据操作

    本文的知识点:1、JSON数据格式介绍,2、对数据编码成JSON格式,3、对JSON数据进行解码,并操作,有需要的小伙伴可以参考下。
    2015-07-07
  • Laravel中间件的使用详解

    Laravel中间件的使用详解

    Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求。这篇文章主要和大家介绍一下Laravel中间件的创建和使用,需要的可以参考一下
    2023-02-02
  • 非常实用的php验证码类

    非常实用的php验证码类

    这篇文章主要为大家分享了非常实用的php验证码类,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • php用户名的密码加密更安全的方法

    php用户名的密码加密更安全的方法

    在本篇文章里小编给大家整理了关于php用户名的密码加密更安全的方法和相关知识点,有兴趣的朋友们参考下。
    2019-06-06
  • php将字符串随机分割成不同长度数组的方法

    php将字符串随机分割成不同长度数组的方法

    这篇文章主要介绍了php将字符串随机分割成不同长度数组的方法,涉及随机数及字符串操作的相关技巧,需要的朋友可以参考下
    2015-06-06

最新评论