首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 輸出金字塔圖案:自定義函數版與雙層循環版兩種實現

     編輯:PHP 綜合知識

版本一:自定義函數 fun_py() (支援正序/倒序、行數驗證)

<?php
/**
 * 金字塔生成器
 * @param int $rows 行數 (1-20)
 * @param bool $asc true正序/false倒序
 * @return string HTML片段
 */
function fun_py($rows = 9, $asc = true) {
    if ($rows < 1 || $rows > 20) return "行數必須在 1-20 之間";
    if ($rows != (int)$rows) return '行數必須為整數';
    
    $str = "";
    $range = $asc ? range(1, $rows) : range($rows, 1);
    
    foreach ($range as $i) {
        $str .= '
'; // 前置空格 $spaces = $rows - $i; $str .= str_repeat(' ', $spaces); // 星號 $str .= str_repeat('* ', $i); } return $str; } echo fun_py(9, false); // 倒序 9 行

版本二:直接雙層循環 (正序)

<?php
for ($a = 1; $a <= 10; $a++) {
    // 空格: 10-$a 個
    for ($b = 10; $b >= $a; $b--) echo " ";
    // 星號: $a 個
    for ($c = 1; $c <= $a; $c++) echo "* ";
    echo "
"; }

版本三:直接雙層循環 (倒序)

<?php
for ($a = 10; $a >= 1; $a--) {
    for ($b = 10; $b >= $a; $b--) echo " ";
    for ($c = 1; $c <= $a; $c++) echo "* ";
    echo "
"; }

核心邏輯解析

層級外層循環空格數星號數
正序第 i 行i = 1..nn - ii
倒序第 i 行i = n..1n - ii

進階變體

// 空心金字塔
for ($i = 1; $i <= $n; $i++) {
    echo str_repeat(' ', $n-$i);
    for ($j = 1; $j <= 2*$i-1; $j++) {
        echo ($j==1 || $j==2*$i-1 || $i==$n) ? '* ' : '  ';
    }
    echo "
"; } // 數字金字塔 for ($i = 1; $i <= $n; $i++) { echo str_repeat(' ', $n-$i); for ($j = 1; $j <= $i; $j++) echo "$j "; for ($j = $i-1; $j >= 1; $j--) echo "$j "; echo "
"; }

效能與風格建議

  • 函數版:可復用、參數驗證、邏輯封裝,適合專案引用
  • 循環版:直觀、無函數調用開銷,適合算法面試、快速測試
  • str_repeat():比內層循環輸出單字符效能高、代碼簡潔
  • HTML 輸出:用 ` ` 保持空格,`
    ` 換行,或用 `
    ` 標籤包裹純文本

金字塔打印是循環控制、字符串拼接、邏輯思維的經典練習,掌握行數與字符數的數學關係即可舉一反三。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved