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 数据结构 算法描述 冒泡排序 bubble sort
Jul 10 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
php上传文件并显示上传进度的方法
Mar 24 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
swoole_process实现进程池的方法示例
Oct 29 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 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
简单易用的计数器(数据库)
2006/10/09 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
详解React 条件渲染
2020/07/08 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
详解用python实现简单的遗传算法
2018/01/02 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
Python中logger日志模块详解
2020/08/04 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
新年晚会开场白
2015/05/29 职场文书