PHP函數(shù)

2018-02-22 16:40 更新

PHP教程 - PHP函數(shù)

函數(shù)是執(zhí)行特定任務(wù)的自包含代碼塊。

函數(shù)避免重復(fù)代碼。它們使得更容易消除錯(cuò)誤。

函數(shù)可以在其他腳本中重用。他們幫助你分解一個(gè)大項(xiàng)目。

參數(shù)

函數(shù)通常接受一個(gè)或多個(gè)參數(shù),它們是由調(diào)用它的代碼傳遞給函數(shù)的值。

然后函數(shù)可以讀取并處理這些參數(shù)。

返回

函數(shù)可以可選地返回可以由調(diào)用代碼讀取的值。

這樣,調(diào)用代碼可以與函數(shù)通信。



PHP函數(shù)創(chuàng)建

我們用function關(guān)鍵字定義函數(shù),后面是函數(shù)的名稱和兩個(gè)括號。

你的函數(shù)將執(zhí)行的實(shí)際代碼大括號之間。

定義函數(shù)使用以下語法:

function myFunc() { 
   // (do stuff here) 
}   

示例 - 定義函數(shù)

定義函數(shù)

<?PHP
         function hello() { 
            echo "Hello, world!\n"; 
         } 
         hello(); 
?>

上面的代碼生成以下結(jié)果。

正如你可以看到,這個(gè)腳本定義一個(gè)函數(shù),hello(),只是顯示string“Hello,world!"

hello()函數(shù)中的代碼僅在稍后調(diào)用函數(shù)時(shí)運(yùn)行,而不是當(dāng)函數(shù)本身被創(chuàng)建時(shí)。



PHP函數(shù)返回

函數(shù)可以從函數(shù)返回一個(gè)值使用return語句。

如果你試圖給一個(gè)變量賦值一個(gè)函數(shù)的返回值沒有返回值,你的變量將被設(shè)置為NULL。

示例 - 函數(shù)的返回值

從函數(shù)返回值

<?PHP
function foo() { 
       print "In function"; 
       return 1; 
       print "Leaving function..."; 
} 
print foo(); 
?>

上面的代碼生成以下結(jié)果。

PHP返回參考

除了通過引用將變量傳遞給函數(shù),你也可以得到返回引用的函數(shù),而不是價(jià)值觀。

在函數(shù)中的函數(shù)名稱前添加一個(gè)&符號定義。 然后,當(dāng)您使用return語句返回一個(gè)變量時(shí),你傳遞一個(gè)引用變量返回調(diào)用代碼,而不是變量的s值:

function  &myFunc(){ 
    // (do stuff) 
   return $var;  // Returns a reference to $var 
}   

從函數(shù)返回引用

<?PHP
   $myNumber = 5; 

   function  &getMyNumber() { 
     global $myNumber; 
     return $myNumber; 
   } 

   $numberRef = &getMyNumber(); 
   $numberRef++; 
   echo "\$myNumber = $myNumber\n";   // Displays "6" 
   echo "\$numberRef = $numberRef\n"; // Displays "6"   
?>

上面的代碼生成以下結(jié)果。

PHP遞歸函數(shù)

遞歸函數(shù)是調(diào)用自身的函數(shù)。

這里是一個(gè)遞歸函數(shù)如何操作的快速概述:

遞歸函數(shù)由調(diào)用代碼調(diào)用如果滿足基本情況,則該函數(shù)需要計(jì)算,然后退出。

否則,該函數(shù)需要計(jì)算,然后調(diào)用自身繼續(xù)遞歸。

這里是一個(gè)計(jì)算階乘的例子:

<?PHP
function factorial($number) { 
        if ($number == 0) return 1; 
        return $number * factorial($number-1); 
} 

print factorial(6); 
?>

上面的代碼生成以下結(jié)果。

示例 - PHP遞歸函數(shù)

下面的代碼顯示了如何創(chuàng)建遞歸函數(shù)。

<?php
  function checkInteger($Number)
  {
    if($Number > 1)
    {
      // integer minus one is still an integer
      return(checkInteger($Number-1));
    }
    elseif($Number < 0)
    {
      //numbers are symmetrical, so
      //check positive version
      return(checkInteger((-1)*$Number-1));
    }
    else
    {
      if(($Number > 0) AND ($Number < 1))
      {
        return("no");
      }
      else
      {
        //zero and one are
        //integers by definition
        return("yes");
      }
    }
  }

  print("Is 0 an integer? " .  checkInteger(0) . "<br>\n");
  print("Is 7 an integer? " . checkInteger(7) . "<br>\n");
  print("And 3.5? " . checkInteger(3.5) . "<br>\n");
  print("What about -5? " . checkInteger(-5) . "<br>\n");
  print("And -9.2? " . checkInteger(-9.2) . "<br>\n");
?>


上面的代碼生成以下結(jié)果。

PHP匿名函數(shù)

PHP匿名函數(shù)沒有名稱。

您可能需要?jiǎng)?chuàng)建匿名函數(shù),有兩個(gè)原因:

  • To create functions dynamically
  • To create short-term, disposable functions

句法

要?jiǎng)?chuàng)建匿名函數(shù),請使用分隔的參數(shù)列表(如果有)和函數(shù)體的代碼。

$myFunction = create_function( "$param1, $param2", "function code here;" );

匿名函數(shù)示例

這里是一個(gè)基于變量值動態(tài)創(chuàng)建匿名函數(shù)的示例:

<?PHP
        $mode = "+"; 
        $processNumbers = create_function( "$a, $b", "return \$a $mode \$b;" ); 
        echo $processNumbers( 2, 3 ); // Displays "5"   
?>

上面的代碼生成以下結(jié)果。

該代碼使用$ mode變量的值作為運(yùn)算符用于處理其兩個(gè)參數(shù)$ a和$ b。例如,如果將$ mode更改為“*",代碼將顯示“6"。

示例 - 動態(tài)函數(shù)

下面的代碼顯示了如何動態(tài)調(diào)用函數(shù)。

<?php
  function write($text)
  {
    print($text);
  }

  function writeBold($text)
  {
    print("<b>$text</b>");
  }

  $myFunction = "write";
  $myFunction("Hello!");
  print("<br>\n");

  $myFunction = "writeBold";
  $myFunction("Goodbye!");
  print("<br>\n");
?>


上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號