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


Posted in PHP onMarch 02, 2015

本文实例讲述了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 相关文章推荐
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
php 中英文语言转换类
Sep 07 PHP
打造超酷的PHP数据饼图效果实现代码
Nov 23 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
关于PHP开发的9条建议
Jul 27 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
PHP7新增函数
Mar 09 PHP
初识laravel5
Mar 02 #PHP
避免Smarty与CSS语法冲突的方法
Mar 02 #PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 #PHP
Java和PHP在Web开发方面对比分析
Mar 01 #PHP
php中return的用法实例分析
Feb 28 #PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 #PHP
Windows7下的php环境配置教程
Feb 28 #PHP
You might like
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
PHP调用三种数据库的方法(3)
2006/10/09 PHP
FCKeditor添加自定义按钮
2008/03/27 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
Python实现的最近最少使用算法
2015/07/10 Python
transform python环境快速配置方法
2018/09/27 Python
python实现微信防撤回神器
2019/04/29 Python
python and or用法详解
2019/06/26 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
解决Python使用列表副本的问题
2019/12/19 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
3分钟英语演讲稿
2014/04/29 职场文书
机械专业求职信
2014/05/25 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
公司授权委托书范文
2014/08/02 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
课外活动实习计划
2015/01/19 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
MySQL创建高性能索引的全步骤
2021/05/02 MySQL