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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
一个数据采集类
Feb 14 PHP
PHP 引用是个坏习惯
Mar 12 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
CodeIgniter配置之routes.php用法实例分析
Jan 19 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
各种快递查询--Api接口
Apr 26 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
PHP开发的微信现金红包功能示例
Jun 29 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与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
MooTools 1.2介绍
2009/09/14 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
Angular2库初探
2017/03/01 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
Python二分查找详解
2015/09/13 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
上海期货面试题
2014/01/31 面试题
银行职员个人的工作自我评价
2014/02/15 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
房产代理公证处委托书
2014/04/04 职场文书
银行求职信范文
2019/05/13 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python