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数据库非常慢的解决方法
Jul 05 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
PHP中其实也可以用方法链
Nov 10 PHP
php获取汉字首字母的函数
Nov 07 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
浅谈PHP封装CURL
Mar 06 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
微信支付之JSAPI公众号支付详解
May 15 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制作百度词典查词采集器
2015/01/29 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
编写Python CGI脚本的教程
2015/06/29 Python
python使用tornado实现简单爬虫
2018/07/28 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
python无序链表删除重复项的方法
2020/01/17 Python
高考考python编程是真的吗
2020/07/20 Python
python实现三壶谜题的示例详解
2020/11/02 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
初中数学教学反思
2014/01/16 职场文书
内勤岗位职责
2015/02/10 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2016新年晚会开场白
2015/12/03 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers