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 相关文章推荐
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
php 邮件发送问题解决
Mar 22 PHP
开源php中文分词系统SCWS安装和使用实例
Apr 11 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
php设置页面超时时间解决方法
Sep 22 PHP
ThinkPHP实现分页功能
Apr 28 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
Jan 27 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中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP实现变色验证码实例
2014/01/06 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
vue-router 学习快速入门
2017/03/01 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
python制作最美应用的爬虫
2015/10/28 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
python装饰器常见使用方法分析
2019/06/26 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
绝对经典成功的大学生推荐信
2013/11/08 职场文书
办公室文秘岗位职责
2013/11/15 职场文书
护士的岗位职责
2013/12/04 职场文书
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
交通事故协议书范文
2014/10/23 职场文书