<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # PHP 中的函數 > 原文: [https://zetcode.com/lang/php/functions/](https://zetcode.com/lang/php/functions/) 在 PHP 編程教程的這一部分中,我們討論函數。 函數是較大程序中的一段代碼。 該函數執行特定任務。 使用函數的優點是: * 減少代碼重復 * 將復雜的問題分解成更簡單的部分 * 提高代碼的清晰度 * 重用代碼 * 信息隱藏 有兩種基本類型的函數。 內置函數和用戶定義的函數。 內置函數是 PHP 語言的一部分。 示例是:`phpinfo()`,`round()`或`abs()`。 用戶定義的函數由應用員創建,以滿足其需求。 它們是使用`function`關鍵字創建的。 ## PHP 定義函數 使用`function`關鍵字創建一個函數。 `simple.php` ```php <?php function displayVersion() { echo "this is PHP " . phpversion(); echo "\n"; } displayVersion(); ``` `function`關鍵字后跟帶有圓括號的函數名稱。 函數的主體位于大括號之間。 我們說我們將稱為函數。 如果我們調用一個函數,則會執行函數體內的語句。 ```php displayVersion(); ``` 該行代碼調用該函數。 ```php $ php simple.php this is PHP 5.5.9-1ubuntu4.14 ``` 在這里,我們看到了腳本的結果。 ## PHP `return`關鍵字 `return`關鍵字用于從函數返回值。 函數可能會也可能不會返回值。 `returning.php` ```php <?php function maximum($x, $y) { if ($x > $y) { return $x; } else { return $y; } } $a = 23; $b = 32; $val = maximum($a, $b); echo "The max of $a and $b is $val \n"; ``` 我們有一個`maximum()`函數。 它返回兩個數字的最大值。 我們無法將其命名為`max`,因為已經有內置的`max()`函數。 創建此示例是出于學習目的; 我們始終希望在現實世界的程序中使用內置函數。 ```php if ($x > $y) { return $x; } else { return $y; } ``` 如果`$x`變量大于`$y`,則返回`$x`。 否則,我們返回`$y`。 ```php $val = maximum($a, $b); ``` `maximum()`函數返回的值分配給`$val`變量。 ```php echo "The max of $a and $b is $val \n"; ``` 我們將兩個數字的最大值打印到控制臺。 ## PHP 函數參數 大多數函數接受參數。 參數是發送到函數的值。 函數處理值,并可能返回一些結果。 `fahrenheit.php` ```php <?php function FTC($c) { return $c * 9/5 + 32; } echo FTC(100); echo "\n"; echo FTC(0); echo "\n"; echo FTC(30); echo "\n"; ``` 在我們的示例中,我們將華氏溫度轉換為攝氏溫度。 `FTC()`函數接受一個參數`$c`,即攝氏溫度。 ```php $ php fahrenheit.php 212 32 86 ``` ## PHP 隱式值 PHP 函數中的參數可能具有隱式值。 如果未提供任何值,則使用隱式值。 `implicit_value.php` ```php <?php function power($a, $b=2) { if ($b == 2) { return $a * $a; } $value = 1; for ($i = 0; $i < $b; $i++) { $value *= $a; } return $value; } $v1 = power(5); $v2 = power(5, 4); echo "5^2 is $v1 \n"; echo "5^4 is $v2 \n"; ``` 在這里,我們創建了冪函數。 該函數有一個帶有隱式值的參數。 我們可以使用一個或兩個參數來調用該函數。 ```php $ php implicit_value.php 5^2 is 25 5^4 is 625 ``` ## PHP 可變參數數量 一個函數可以接受可變數量的參數。 換句話說,有時我們不知道將有多少參數傳遞給該函數。 `func_get_args()`函數返回一個包含函數的參數列表的數組。 從 PHP 5.6 開始,`...`運算符可用于創建可變函數。 `variable_arguments1.php` ```php <?php function sum(...$nums) { $sum = 0; foreach ($nums as $n) { $sum += $n; } return $sum; } echo sum(1, 2, 3) . "\n"; echo sum(1, 2, 3, 4) . "\n"; echo sum(1, 2, 3, 4, 5) . "\n"; ``` 我們創建一個`sum()`方法,該方法可以使用可變數量的參數。 該方法計算傳遞給該方法的值的總和。 ```php $sum = 0; foreach ($args as $n) { $sum += $n; } return $sum; ``` 我們計算并返回值的總和。 ```php echo sum(1, 2, 3) . "\n"; echo sum(1, 2, 3, 4) . "\n"; echo sum(1, 2, 3, 4, 5) . "\n"; ``` 我們將三個,四個和五個值傳遞給`sum()`函數。 ```php $ php variable_arguments1.php 6 10 15 ``` 這是輸出。 `variable_arguments2.php` ```php <?php function sum() { $args = func_get_args(); $sum = 0; foreach ($args as $n) { $sum += $n; } return $sum; } echo sum(1, 2, 3) . "\n"; echo sum(1, 2, 3, 4) . "\n"; echo sum(1, 2, 3, 4, 5) . "\n"; ``` 現在,使用`func_get_args()`函數創建相同的示例。 ## PHP 靜態變量 靜態變量是已靜態分配的變量,其生存期遍及整個程序運行。 默認的局部變量不會在函數的連續調用中保留其值。 `non_static.php` ```php <?php function nonstatic() { $value = 0; $value += 1; return $value; } nonstatic(); nonstatic(); nonstatic(); nonstatic(); echo nonstatic(), "\n"; ``` 在上面的示例中,我們有一個普通的非靜態變量。 每次調用函數時,我們都會增加變量。 我們調用該函數 5 次。 但是,對于函數的每次調用都會啟動非靜態變量。 在 5 個函數調用之后,`$value`等于 2。 首次調用函數時,靜態變量僅啟動一次。 之后,他們保留自己的值。 `static.php` ```php <?php function staticfun() { static $value = 0; $value += 1; return $value; } staticfun(); staticfun(); staticfun(); staticfun(); echo staticfun(), "\n"; ``` 連續 5 次通話后,`$value`等于 5。 ```php $ php nonstatic.php 2 $ php static.php 6 ``` ## PHP 匿名函數 匿名函數沒有名稱。 `anonymous.php` ```php <?php $var = function() { echo "This is anonymous function\n"; }; $var(); ``` 我們將函數主體分配給變量。 只能通過此變量來調用函數。 ```php $var = function() { echo "This is anonymous function\n"; }; ``` 注意右花括號后的分號。 這是必需的,因為構造是分配。 ```php $ php anonymous.php This is anonymous function ``` 這是示例的輸出。 ## 通過值和引用傳遞參數 PHP 支持兩種將參數傳遞給函數的方式。 默認方式是按值傳遞參數。 當我們按值傳遞參數時,該函數僅適用于值的副本。 當我們處理大量數據時,這可能會導致性能開銷。 當我們通過引用傳遞值時,該函數會收到對實際值的引用。 修改后,原始值會受到影響。 這種傳遞值的方式更加節省時間和空間。 另一方面,它更容易出錯。 我們應該使用哪種方式傳遞參數? 這取決于實際情況。 假設我們有一組數據,即員工工資。 如果我們要計算數據的某些統計信息,則無需修改它們。 我們通過值。 如果我們處理大量數據,并且計算速度至關重要,則可以引用。 如果我們要修改數據,例如進行一些減薪或加薪,我們可以引用一下。 以下兩個示例涵蓋了這兩個概念。 `swap1.php` ```php <?php function swap($a, $b) { $temp = $a; $a = $b; $b = $temp; echo "inside swap function:\n"; echo "\$a is $a \n"; echo "\$b is $b \n"; } $a = 4; $b = 7; echo "outside swap function:\n"; echo "\$a is $a \n"; echo "\$b is $b \n"; swap($a, $b); echo "outside swap function:\n"; echo "\$a is $a \n"; echo "\$b is $b \n"; ``` 交換函數在`$a`和`$b`變量之間交換數字。 原始變量不受影響。 ```php $a = 4; $b = 7; ``` 最初,這兩個變量被啟動。 ```php swap($a, $b); ``` 我們稱為`swap()`函數。 該函數將`$a`和`$b`變量作為參數。 ```php $temp = $a; $a = $b; $b = $temp; ``` 在`swap()`函數內部,我們更改值。 請注意,`$a`和`$b`變量是在本地定義的。 它們僅在`swap()`函數內部有效。 ```php $ php swap1.php outside swap function: $a is 4 $b is 7 inside swap function: $a is 7 $b is 4 outside swap function: $a is 4 $b is 7 ``` 輸出顯示原始變量不受影響。 下一個代碼示例通過引用將值傳遞給函數。 原始變量在`swap()`函數內更改。 `swap2.php` ```php <?php function swap(&$a, &$b) { $temp = $a; $a = $b; $b = $temp; echo "Inside the swap function:\n"; echo "\$a is $a \n"; echo "\$b is $b \n"; } $a = 4; $b = 7; echo "Outside the swap function:\n"; echo "\$a is $a \n"; echo "\$b is $b \n"; swap($a, $b); echo "Outside the swap function:\n"; echo "\$a is $a \n"; echo "\$b is $b \n"; ``` 我們使用`&`字符通過引用傳遞值。 ```php function swap(&$a, &$b) { ... } ``` 這個例子幾乎與前面的例子相同。 除&字符外。 ```php $ php swap2.php Outside the swap function: $a is 4 $b is 7 Inside the swap function: $a is 7 $b is 4 Outside the swap function: $a is 7 $b is 4 ``` 在這里我們看到`swap()`函數確實改變了變量的值。 ## PHP 函數遞歸 在數學和計算機科學中,遞歸是一種定義函數的方法,其中所定義的函數在其自己的定義內應用。 換句話說,遞歸函數調用自身以完成其工作。 遞歸是迭代的替代方法。 遞歸是函數式語言中的主要方法。 一個典型的例子是階乘的計算。 `recursion.php` ```php <?php function factorial($n) { if ($n==0) { return 1; } else { return $n * factorial($n - 1); } } echo factorial(4), "\n"; echo factorial(10), "\n"; ``` 在此代碼示例中,我們計算兩個數字的階乘。 ```php return $n * factorial($n - 1); ``` 在階乘函數的主體內部,我們使用經過修改的參數調用階乘函數。 該函數調用自身。 ```php $ php recursion.php 24 3628800 ``` 這些就是結果。 ## PHP 全局和局部變量 接下來,我們將討論 PHP 中變量的范圍。 范圍是可以引用變量的范圍。 當我們使用函數時,有兩個基本范圍:全局范圍和局部范圍。 局部作用域也稱為函數作用域。 `scope1.php` ```php <?php $value = 1; function simple() { var_dump($value); } simple(); ``` 在函數體內定義的變量不能在函數內引用。 ```php $ php scope1.php PHP Notice: Undefined variable: value in /home/janbodnar/prog/php/functions/scope1.php on line 7 NULL ``` `simple()`函數中的`$value`變量為`NULL`。 `scope2.php` ```php <?php $value = 4; function simple() { $value = 3; echo $value, "\n"; } simple(); echo $value, "\n"; ``` 在此示例中,我們有兩個具有相同名稱的變量。 它們不會沖突,因為它們存在于不同的范圍內。 ```php $ php scope2.php 3 4 ``` 該值在函數內部為 3,在函數外部為 4。 在下一個示例中,我們將在函數內部修改一個值。 `scope3.php` ```php <?php $value = 1; function simple() { global $value; $value = 2; } echo $value, "\n"; simple(); echo $value, "\n"; ``` 我們使用`global`關鍵字來引用在函數主體外部定義的變量。 ```php $ php scope3.php 1 2 ``` `$value`已在`simple()`函數內成功修改。 在 PHP 教程的這一部分中,我們介紹了 PHP 函數。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看