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之第五天
Oct 09 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
php实例分享之二维数组排序
May 15 PHP
php绘制一条直线的方法
Jan 24 PHP
PHP实现图片上传并压缩
Dec 22 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
phpinfo的知识点总结
Oct 10 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 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 session应用实例 登录验证
2009/03/16 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
js parsefloat parseint 转换函数
2010/01/21 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
bootstrap table实现合并单元格效果
2018/12/24 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
python和js交互调用的方法
2020/06/23 Python
如何教少儿学习Python编程
2020/07/10 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
Python 如何实现访问者模式
2020/07/28 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
社会实践自我鉴定
2013/11/07 职场文书
餐饮业会计岗位职责
2013/12/19 职场文书
毕业自我评价
2014/02/05 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
小学优秀教师材料
2014/12/15 职场文书
圆明园观后感
2015/06/03 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
MySQL派生表联表查询实战过程
2022/03/20 MySQL