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 相关文章推荐
用phpmyadmin更改mysql5.0登录密码
Mar 25 PHP
php header示例代码(推荐)
Sep 08 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
php中array_multisort对多维数组排序的方法
Jun 21 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
php无限极分类实现方法分析
Jul 04 PHP
解决laravel查询构造器中的别名问题
Oct 17 PHP
PHP实现rar解压读取扩展包小结
Jun 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
jQuery 源码分析笔记
2011/05/25 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
django model object序列化实例
2020/03/13 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
品质主管的岗位职责
2013/12/04 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
2016年教师节感言
2015/12/09 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js
Mysql开启外网访问
2022/05/15 MySQL