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 MemCached高级缓存配置图文教程
Aug 05 PHP
PHP通用检测函数集合
Feb 08 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
php从给定url获取文件扩展名的方法
Mar 14 PHP
深入浅析用PHP实现MVC
Mar 02 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
php基于协程实现异步的方法分析
Jul 17 PHP
Laravel 实现数据软删除功能
Aug 21 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的对象注入(Object Injection)
2017/03/01 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
jQuery事件详解
2017/02/23 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python字符串处理实现单词反转
2017/06/14 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
Python制作动态字符图的实例
2019/01/27 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
python树的同构学习笔记
2019/09/14 Python
Python 面向对象部分知识点小结
2020/03/09 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS