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.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
程序员编程十条戒律
Jul 09 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
PHP中改变图片的尺寸大小的代码
Jul 17 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
PHP中的表达式简述
May 29 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
PHP闭包定义与使用简单示例
Apr 13 PHP
PHP children()函数讲解
Feb 03 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来检测proxy
2006/10/09 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
php返回json数据函数实例
2014/10/09 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
校园安全检查制度
2014/02/03 职场文书
小学亲子活动总结
2014/07/01 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
就业意向书范本
2015/05/11 职场文书
管辖权异议上诉状
2015/05/23 职场文书
社区宣传标语口号
2015/12/26 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL