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 相关文章推荐
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
php实现的SESSION类
Dec 02 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
微信支付之JSAPI公众号支付详解
May 15 PHP
详解PHP PDO简单教程
May 28 PHP
php如何获取Http请求
Apr 30 PHP
php 原生分页
Apr 01 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的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
jQuery客户端分页实例代码
2013/11/18 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
python获得一个月有多少天的方法
2015/06/04 Python
Python解析树及树的遍历
2016/02/03 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
介绍一下MD5加密算法
2016/11/12 面试题
EJB实例的生命周期
2016/10/28 面试题
餐饮总经理岗位职责
2014/03/07 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
2014年纠风工作总结
2014/12/08 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
公司员工体检通知
2015/04/21 职场文书
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android