PHP8中自定義函數(shù)-PHP8知識詳解
導讀:今天分享的是PHP8中自定義函數(shù)。包含什么是函數(shù)、什么是自定義函數(shù)、定義和調(diào)用函數(shù)、函數(shù)中的變量作用域。
永久美國免備案虛擬主機1元1天,15元1月,100元1年,1000元永久
站長在線旗下答案網(wǎng)站,全站所有題目,免費查看答案和答案解析
今天分享的是PHP8中自定義函數(shù)。包含什么是函數(shù)、什么是自定義函數(shù)、定義和調(diào)用函數(shù)、函數(shù)中的變量作用域。
1、什么是函數(shù)?
函數(shù),在英文中的單詞是function,這個詞語有功能的意思,也就是說,使用函數(shù)就是在編程的過程中,實現(xiàn)一定的功能。即函數(shù)就是實現(xiàn)一定功能的一段特定代碼。
在前面的教學中,我們已經(jīng)學習到了函數(shù)的使用了,比如,使用define()函數(shù)定義一個常量。在這里我們來講解自定義函數(shù)。
任何有效的 php 代碼都有可能出現(xiàn)在函數(shù)內(nèi)部,甚至包括其它函數(shù)和 類 定義。
函數(shù)名和 PHP 中的其它標識符命名規(guī)則相同。有效的函數(shù)名以字母或下劃線打頭,后面跟字母,數(shù)字或下劃線??梢杂?a href="http://003188.cn/tag/zhengzebiaodashi/" data-type="mip" data-title="正則表達式" target="_blank" title="正則表達式">正則表達式表示為: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$。
PHP 中的所有函數(shù)和類都具有全局作用域,可以定義在一個函數(shù)之內(nèi)而在之外調(diào)用,反之亦然。
PHP 不支持函數(shù)重載,也不可能取消定義或者重定義已聲明的函數(shù)。
2、什么是自定義函數(shù)?
自定義函數(shù)是一種在編程中創(chuàng)建的用戶自定義的功能代碼塊。它們允許程序員定義自己的函數(shù),并根據(jù)需要在程序中調(diào)用它們。自定義函數(shù)可以接收參數(shù),執(zhí)行特定的任務,并返回一個值。
通過使用自定義函數(shù),程序員可以將復雜的任務分解為更小的可重用代碼塊,提高代碼的可讀性和可維護性。自定義函數(shù)是編程中常用的概念,幾乎在所有的編程語言中都有支持。在php8中也不例外。
3、定義和調(diào)用函數(shù)
一般情況下,程序員面對的是自定義函數(shù)。其語法結(jié)構如下:
function 函數(shù)名稱(參數(shù)1,參數(shù)2,……){
函數(shù)的具體內(nèi)容;
}
函數(shù)定義完成以后,即可調(diào)用這個函數(shù)。調(diào)用函數(shù)的操作比較簡單,直接引用函數(shù)名并賦予正確的參數(shù),即可完成函數(shù)的調(diào)用。
<?php
// 定義一個函數(shù)
function myfun($a, $b) {
$sum = $a + $b;
$product = $a * $b;
// 返回求和和求積的結(jié)果作為數(shù)組
return array($sum, $product);
}
// 調(diào)用myfun()函數(shù)并輸出結(jié)果
$results = myfun(10, 20);
echo "求和計算結(jié)果是: " . $results[0] . "<br>";
echo "求積的計算結(jié)果是: " . $results[1];
?>
以上代碼在PHP8中的運行結(jié)果為:
求和計算結(jié)果是: 30
求積的計算結(jié)果是: 200
4、函數(shù)中的變量作用域
所謂 變量作用域,是指特定變量在代碼中可以被訪問到的位置。在PHP8中,有6種基本變量作用域法則:
一、內(nèi)置超全局變量。在代碼中任意位置都能訪問的變量。
二、常數(shù)。一旦聲明,他就是全局性的,可以在函數(shù)的內(nèi)外使用。
三、全局變量。在代碼聲明中,可以愛代碼中訪問,但是不能在函數(shù)內(nèi)部訪問。
四、在函數(shù)中聲明為全局變量的變量。就是同名的全局變量。
五、在函數(shù)中創(chuàng)建和聲明為靜態(tài)變量的變量。該變量在函數(shù)外是無法訪問的,但是這個靜態(tài)變量的值是可以保留的。
六、在函數(shù)中創(chuàng)建和聲明的局部變量。在函數(shù)外是無法訪問的,并且在本函數(shù)終止時終止并推出。
4.1、超全局變量
PHP 中的許多預定義變量都是“超全局的”,這意味著它們在一個腳本的全部作用域中都可用。在函數(shù)或方法中無需執(zhí)行 global $variable; 就可以訪問它們。
這些超全局變量是:
$GLOBALS:它是一個包含了當前腳本中所有全局變量的數(shù)組。
$_SERVER:它是一個包含了服務器和執(zhí)行環(huán)境信息的數(shù)組,如 http 請求頭、路徑等。
$_get:它是一個包含通過 GET 方法傳遞給當前腳本的參數(shù)和值的數(shù)組。
$_POST:它是一個包含通過 POST 方法傳遞給當前腳本的參數(shù)和值的數(shù)組。
$_FILES:它是一個包含上傳文件的相關信息的數(shù)組,包括文件名、類型、大小等。
$_COOKIE:它是一個包含客戶端發(fā)送的 Cookie 的相關信息的數(shù)組。
$_SESSION:它是一個包含用戶會話數(shù)據(jù)的數(shù)組,用于存儲特定用戶在不同頁面之間共享的數(shù)據(jù)。
$_REQUEST:它是一個包含了通過 HTTP 請求方法(GET、POST和COOKIES)傳遞給當前腳本的參數(shù)和值的數(shù)組。
$_ENV:它是一個包含環(huán)境變量的數(shù)組,這些變量是由操作系統(tǒng)或 web 服務器設置的。
請注意,對這些超全局變量進行直接引用可能存在安全性和可靠性問題。在使用時,請確保驗證和過濾來自用戶的輸入以防止?jié)撛诘陌踩┒础?br>
4.2、全局變量
全局變量就是在函數(shù)外聲明的變量,在代碼中可以訪問,但是在函數(shù)內(nèi)部是不能訪問的。這是因為函數(shù)默認就不能訪問起外部的全局變量。
函數(shù)內(nèi)訪問全局變量示范代碼:
<?php
$a = "PHP"; //定義全局變量
function xuexi() { // 定義一個函數(shù)
echo "正在學習的是: " .$a; //函數(shù)內(nèi)調(diào)用全局變量
}
xuexi(); //運行函數(shù)
?>
在PHP8中運行的結(jié)果為:
Warning: Undefined variable $a in D:\phpenv\www\localhost\test.php on line 4
正在學習的是:
上面內(nèi)容明顯是異常信息,如果想讓函數(shù)訪問某個全局變量,可以在函數(shù)中使用global關鍵字來聲明。
使用global關鍵字訪問全局變量,示例代碼:
<?php
$a = "PHP"; //定義全局變量
function xuexi() { // 定義一個函數(shù)
global $a; //函數(shù)內(nèi)聲明全局變量
echo "正在學習的是: " .$a; //函數(shù)內(nèi)調(diào)用全局變量
}
xuexi(); //運行函數(shù)
?>
在PHP8中運行的結(jié)果為:
正在學習的是: PHP
也可以使用超全局變量中的$GLOBALS數(shù)組進行訪問。
使用$GLOBALS數(shù)組進行訪問全局變量,示范代碼:
<?php
$a = "PHP8"; //定義全局變量
function xuexi() { // 定義一個函數(shù)
$a = $GLOBALS["a"]; //通過$GLOBALS數(shù)組訪問全局變量
echo "正在學習的是: " .$a; //函數(shù)內(nèi)調(diào)用全局變量
}
xuexi(); //運行函數(shù)
?>
在PHP8中運行的結(jié)果為:
正在學習的是: PHP8
4.3、靜態(tài)變量
靜態(tài)變量只是在函數(shù)內(nèi)存在,函數(shù)外無法訪問。但是執(zhí)行以后,其值會保留。
也就是說,這一次執(zhí)行完畢以后,這個靜態(tài)變量的值保留,下一次執(zhí)行此函數(shù),這個值還可以調(diào)用。
當在 PHP 8 中使用靜態(tài)變量時,您可以在函數(shù)內(nèi)部聲明一個變量,并在后續(xù)的調(diào)用中保持其值不變。這樣做可以在多次函數(shù)調(diào)用之間共享數(shù)據(jù)。
以下是一個示例代碼:
<?php
function increment() {
static $counter = 0;
$counter++;
echo "Counter value: " . $counter . "<br>";
}
increment();
increment();
increment();
?>
以上代碼在PHP8中運行的結(jié)果為:
Counter value: 1
Counter value: 2
Counter value: 3
在上面的代碼中,我們定義了一個名為 $counter 的靜態(tài)變量,并初始化為 0。每當 increment() 函數(shù)被調(diào)用時,該變量都會自增并輸出當前計數(shù)器的值。
由于 $counter 是一個靜態(tài)變量,在函數(shù)調(diào)用之間它的值得以保持和共享。因此,每次調(diào)用 increment() 都會使計數(shù)器遞增。
到這為止,今天分享的是PHP8中自定義函數(shù)。包含什么是函數(shù)、什么是自定義函數(shù)、定義和調(diào)用函數(shù)、函數(shù)中的變量作用域。
本文地址:http://003188.cn/php8zhongzidingyihanshu.html
阿里云虛擬主機1G空間,120元一年
香港、美國虛擬主機100元一年,1000元永久
騰訊云雙十一0.4折起,2核8G5M三年僅700元,2核4G8M三年僅198元
猜你喜歡