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

PHP 經典入門代碼片段:循環、函數、遞歸、判斷整數

     編輯:PHP 相關知識

前言

基礎語法是構建複雜應用的基石。本文整理幾個經典的 PHP 入門代碼片段,涵蓋循環進階用法、函數定義與調用、預設參數、遞歸算法判斷整數,適合初學者反復練習、理解執行流程。

1. 基礎 for 循環

<?php
for ($counter = 1; $counter <= 6; $counter++) {
    echo "Counter is $counter
"; } // 輸出 1 到 6,每行加粗 ?>

2. 進階 for 循環:計算距離下個星期一的天數

<?php
echo "距離星期一還有幾天?
    "; // 1. 取得當前時間戳 // 2. 條件:date('l', $currentDate) != 'Monday'(當前不是星期一) // 3. 每次迴圈 +86400 秒(一天) for ( $currentDate = time(); // 初始化:當前時間戳 date('l', $currentDate) !== 'Monday'; // 條件:不是星期一繼續 $currentDate += 86400 // 步進:加一天 ) { echo "
  1. " . date('l', $currentDate) . "
  2. "; } echo "
"; ?>

解析:`for` 三段式靈活運用——初始化可呼叫函數、條件可用複雜表達式、步進可執行任意語句。此例展示「時間遍歷」思維。

3. 無返回值函數(過程式)

<?php
function printBold(string $text): void {
    echo "$text";
}

echo "這行沒有加粗!
"; printBold("這行加粗了!!!"); echo "
這行沒有加粗!
"; ?>

4. 有返回值函數(函數式)

<?php
function makeBold(string $text): string {
    return "$text";
}

echo "這行沒有加粗!!!
"; echo makeBold("這行被加粗了!!!") . "
"; echo "這行沒有加粗!!!
"; ?>

區別:返回值函數可組合、可賦值、可傳遞,更符合函數式編程與現代框架風格。

5. 預設參數函數

<?php
function printColored(string $text, string $color = 'black'): void {
    echo "$text";
}

printColored("這是黑色字!");           // 使用預設黑色
echo "

"; printColored("這是藍色字!", "blue"); // 覆蓋參數 echo "
"; ?>

6. 遞歸判斷整數(教學示範,非生產寫法)

<?php
function checkInteger(float $number): string {
    // 基礎情況
    if ($number > 1) {
        // 正整數遞歸減 1,直到 0 或 1
        return checkInteger($number - 1);
    } elseif ($number < 0) {
        // 負數轉正再遞歸(注意:遞歸深度 = 絕對值,大數會爆棧)
        return checkInteger(-$number - 1);
    } else {
        // 0 <= number <= 1 區間
        if ($number > 0 && $number < 1) {
            return "當然不是整數"; // 如 0.5
        } else {
            return "是的,是整數";  // 0 或 1
        }
    }
}

// 測試
$tests = [0, 1, 5, -3, 0.5, 100];
foreach ($tests as $n) {
    echo "$n 是整數嗎? " . checkInteger($n) . "
"; } ?>

遞歸版本缺陷與改進

問題說明改進
棧溢出大數遞歸深度過大(如 1000000)導致 Maximum function nesting level 錯誤用迴圈:return (int)$num === $num 或 ctype_digit/filter_var
浮點精度浮點數運算誤差(如 0.1 + 0.2 !== 0.3)整數判斷用 is_int()、filter_var($v, FILTER_VALIDATE_INT)
負數邏輯-$number - 1 邏輯易誤解直接取絕對值 abs($number)

生產環境推薦寫法

<?php
// 1. 原生函數(最快、最準)
function isInteger(mixed $value): bool {
    return filter_var($value, FILTER_VALIDATE_INT) !== false;
}

// 2. 嚴格型別(PHP 8.0+)
function isStrictInt(int|float|string $value): bool {
    if (is_int($value)) return true;
    if (is_float($value)) return $value === (int)$value; // 如 5.0
    if (is_string($value)) return ctype_digit($value) || ($value[0] === '-' && ctype_digit(substr($value, 1)));
    return false;
}

// 3. 正則(靈活但較慢)
function isIntRegex(string $value): bool {
    return preg_match('/^-?\d+$/', $value) === 1;
}
?>

結語

這些片段看似簡單,實則蘊含「循環控制流」、「函數簽名設計」、「遞歸終止條件」、「型別系統」等核心概念。初學者請動手敲碼、加斷點觀察變數變化、嘗試改寫為迴圈版本,方能內化為直覺。

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