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+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
php连接数据库代码应用分析
May 29 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
PHP实现图片上传并压缩
Dec 22 PHP
PHP编写RESTful接口
Feb 23 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
laravel通用化的CURD的实现
Dec 13 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中使用虚代理实现延迟加载技术
2014/11/05 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
js评分组件使用详解
2017/06/06 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
python写的一个squid访问日志分析的小程序
2014/09/17 Python
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
python地震数据可视化详解
2019/06/18 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
新书吧创业计划书
2014/01/31 职场文书
七匹狼男装广告词
2014/03/21 职场文书
预备党员转正考核材料
2014/06/03 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
护理专业自荐信范文
2015/03/06 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python