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 相关文章推荐
安装APACHE
Jan 15 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
完美实现GIF动画缩略图的php代码
Jan 02 PHP
php修改时间格式的代码
May 29 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 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基础知识:函数基础知识
2006/12/13 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
jquery实现心算练习代码
2010/12/06 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
英国领先的游戏零售商:GAME
2019/09/24 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
汇科协同Java笔试题
2012/03/31 面试题
大学生个人简历自我评价
2013/11/16 职场文书
超市营业员岗位职责
2013/12/20 职场文书
退休感言
2014/01/28 职场文书
年终晚会主持词
2014/03/25 职场文书
个人买房协议书范本
2014/10/06 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
个人收入证明格式
2015/06/24 职场文书
运动会100米广播稿
2015/08/19 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang
MySQL限制查询和数据排序介绍
2022/03/25 MySQL