PHP如何输出五角星:从基础图形到艺术图案
在PHP编程中,输出五角星看似是一个简单的问题,但实际上涉及到了循环控制、字符串处理、数学计算等多个知识点,本文将详细介绍如何使用PHP输出不同样式的五角星,从基础的星号(*)排列到更复杂的艺术图案。
输出基础五角星图案
最简单的五角星输出是由星号(*)组成的字符图案,我们可以使用嵌套循环来实现:
<?php function printStar($size) { $height = $size * 2 - 1; for ($i = 1; $i <= $height; $i++) { $stars = ($i <= $size) ? $i : $height - $i + 1; $spaces = $size - $stars; // 打印空格 for ($j = 1; $j <= $spaces; $j++) { echo " "; } // 打印星号 for ($j = 1; $j <= 2 * $stars - 1; $j++) { echo "*"; } echo "<br>"; } } printStar(5); ?>
这段代码会输出一个由星号组成的三角形,可以看作是五角星的基础部分。
输出完整五角星
要输出一个完整的五角星,我们需要更复杂的逻辑:
<?php function printFivePointedStar($size) { $height = $size * 2 - 1; for ($i = 1; $i <= $height; $i++) { $stars = 0; if ($i <= $size) { $stars = $i; } else { $stars = $height - $i + 1; } $spaces = $size - $stars; // 上半部分 for ($j = 1; $j <= $spaces; $j++) { echo " "; } for ($j = 1; $j <= 2 * $stars - 1; $j++) { echo "*"; } // 下半部分 if ($i > $size) { $bottomSpaces = $i - $size - 1; for ($j = 1; $j <= $bottomSpaces; $j++) { echo " "; } for ($j = 1; $j <= 2 * ($size - $bottomSpaces) - 1; $j++) { echo "*"; } } echo "<br>"; } } printFivePointedStar(5); ?>
这段代码会输出一个更接近五角星形状的图案。
使用HTML和CSS美化五角星
如果想要更美观的五角星,可以结合HTML和CSS:
<?php function drawStar($size) { $star = ''; for ($i = 0; $i < $size; $i++) { $angle = deg2rad(90 + $i * 72); $x = round(50 + 40 * cos($angle)); $y = round(50 + 40 * sin($angle)); if ($i == 0) { $star .= "M $x,$y"; } else { $star .= " L $x,$y"; } } $star .= " Z"; echo '<svg width="100" height="100" viewBox="0 0 100 100">'; echo '<polygon points="' . $star . '" fill="gold" stroke="orange" stroke-width="2"/>'; echo '</svg>'; } drawStar(5); ?>
这段代码使用SVG绘制了一个真正的五角星,可以通过CSS进一步美化。
输出彩色五角星
如果想要输出彩色的五角星,可以使用ANSI颜色代码:
<?php function printColorStar($size) { $colors = ["\033[31m", "\033[32m", "\033[33m", "\033[34m", "\033[35m"]; $reset = "\033[0m"; for ($i = 1; $i <= $size; $i++) { $color = $colors[($i - 1) % count($colors)]; echo str_repeat(" ", $size - $i) . $color . str_repeat("*", 2 * $i - 1) . $reset . "<br>"; } for ($i = $size - 1; $i >= 1; $i--) { $color = $colors[($i - 1) % count($colors)]; echo str_repeat(" ", $size - $i) . $color . str_repeat("*", 2 * $i - 1) . $reset . "<br>"; } } printColorStar(5); ?>
注意:ANSI颜色代码在终端中有效,在浏览器中可能需要特殊处理。
动态生成五角星图案
我们还可以创建一个函数,根据用户输入动态生成不同大小的五角星:
<?php function generateStar($size, $char = '*', $color = '') { if ($size < 2) return "Size must be at least 2"; $star = ''; for ($i = 0; $i < $size * 2 - 1; $i++) { $line = ''; $stars = ($i < $size) ? $i + 1 : $size * 2 - $i - 1; $spaces = $size - $stars; $line .= str_repeat(' ', $spaces); $line .= str_repeat($char, 2 * $stars - 1); if ($color) { $line = "<span style='color:$color'>$line</span>"; } $star .= $line . "<br>"; } return $star; } // 示例使用 echo generateStar(5, '★', 'gold'); echo generateStar(7, '☆', 'silver'); ?>
通过以上几种方法,我们可以在PHP中输出各种样式的五角星:
- 使用简单的星号(*)排列
- 通过嵌套循环构建复杂图案
- 结合HTML/CSS/SVG创建矢量图形
- 使用颜色代码添加视觉效果
- 动态生成不同大小和样式的五角星
这些方法不仅展示了PHP的基本语法,还涉及到了数学计算、字符串处理和图形绘制等进阶主题,开发者可以根据实际需求选择最适合的方法,或者将这些方法组合起来创建更复杂的图形效果。
还没有评论,来说两句吧...