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详细彻底学习Smarty
Mar 27 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
PHP return语句的另一个作用
Jul 30 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
一个实用的php验证码类
Jul 06 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
基于laravel where的高级使用方法
Oct 10 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 301转向实现代码
2008/09/18 PHP
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
PHP模块memcached使用指南
2014/12/08 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
django实现用户登陆功能详解
2017/12/11 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python之指数与E记法的区别详解
2019/11/21 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
结构工程研究生求职信
2013/10/13 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
餐厅筹备计划书
2014/04/25 职场文书
小小商店教学反思
2014/04/27 职场文书
养成教育工作总结
2015/08/13 职场文书
人民调解协议书
2016/03/21 职场文书
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js