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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
mysql+php分页类(已测)
Mar 31 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
php array的学习笔记
May 16 PHP
PHP函数超时处理方法
Feb 14 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
PHP重定向与伪静态区别
Feb 19 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 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
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
php SQL防注入代码集合
2008/04/25 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
用js编写留言板
2020/03/17 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Vue3为什么这么快
2020/09/23 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python中的常量和变量代码详解
2018/07/25 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
Python Web版语音合成实例详解
2019/07/16 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
python计算二维矩形IOU实例
2020/01/18 Python
PyCharm如何导入python项目的方法
2020/02/06 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
给老婆的搞笑检讨书
2014/01/12 职场文书
组织鉴定材料
2014/06/02 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
导游词之太湖
2019/10/08 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python