常規(guī)參數(shù)的函數(shù)
- 常規(guī)參數(shù)的函數(shù)格式說(shuō)明:
string example(string name,int age,double height)
- 所謂的常規(guī)參數(shù)的函數(shù),就是實(shí)參和形參應(yīng)該個(gè)數(shù)相等、類型一致。就像 C 或 Java 等強(qiáng)類型型語(yǔ)言。
- 上面函數(shù)有三個(gè)參數(shù),調(diào)用時(shí)傳遞的參數(shù)個(gè)數(shù)和順序必須一致。
- 比如:
string chr(int $ascii) ,返回指定的字符
float ceil(float $value) ,進(jìn)一法取整
array array_combine(array $keys,array $values) ,合并一個(gè)數(shù)組
string implode(string $glue,array $pieces)
偽類型參數(shù)的函數(shù)
- 常規(guī)參數(shù)的函數(shù)格式說(shuō)明:
mixed funName(mixed $a, number $b, callback $c)
- PHP是弱類型語(yǔ)言,不僅在聲明變量時(shí)不需要指定類型,當(dāng)然在聲明函數(shù)時(shí)也不需要指定類型,所以在PHP中函數(shù)的每個(gè)參數(shù),都可以為其傳遞任意類型的值。
- 三種偽類型:
mixed 、number 和 callback 。
- 比如:
bool empty(mixed $var) ,檢查一個(gè)變量是否為空
bool usort(array &$array,callback $cmp_function) ,自定義函數(shù)對(duì)數(shù)組排序
number abs(mixed $number) ,絕對(duì)值
引用參數(shù)的函數(shù)
- 引用參數(shù)的函數(shù)格式說(shuō)明:
void funName(array &args)
- "&"修飾的參數(shù)是引用參數(shù),會(huì)得到變量的地址,實(shí)際上就是把參數(shù)的地址傳進(jìn)來(lái)。如果在函數(shù)內(nèi)部修改了參數(shù),外部所對(duì)應(yīng)的變量數(shù)據(jù)一樣會(huì)被修改。
- 相對(duì)于按值傳遞模式,并不會(huì)將父程序中的指定數(shù)值或目標(biāo)變量傳遞給函數(shù),而是把該數(shù)值或變量的內(nèi)存儲(chǔ)存區(qū)塊相對(duì)地址導(dǎo)入函數(shù)之中。因此當(dāng)該數(shù)值在函數(shù)中有任何變動(dòng)時(shí),會(huì)連帶對(duì)父程序造成影響。
- 注意:如果在函數(shù)的形參中使用“&“修飾的參數(shù),在調(diào)用該函數(shù)時(shí)必須傳入一個(gè)變量給這個(gè)參數(shù),而是不能傳遞一個(gè)值。
<?php
// &$num 是一個(gè)內(nèi)存的存儲(chǔ)地址
function demo(&$num){
return $num ; // 先取值,后自加
}
// demo(10) // 報(bào)錯(cuò),只能傳遞一個(gè)變量,不能傳遞具體值
//
$i = 10;
echo demo($i); // 10
echo "<hr />";
echo $i; // 11
默認(rèn)參數(shù)的函數(shù)
- 默認(rèn)參數(shù)(“[]”中的)的函數(shù)格式說(shuō)明:
mixed funName(string name [,string value [,int num]])
- 在 PHP 中,支持函數(shù)的默認(rèn)方式調(diào)用。如果在調(diào)用函數(shù)時(shí)沒(méi)有指定參數(shù)的值,在函數(shù)中會(huì)使用參數(shù)的默認(rèn)值
- 注意:默認(rèn)參數(shù)必須列在所有沒(méi)有默認(rèn)值參數(shù)的后面。
回調(diào)函數(shù)
- 回調(diào)函數(shù)格式說(shuō)明:
mixed funName(callback arg)
- 所謂回調(diào)函數(shù),就是指調(diào)用函數(shù)時(shí)并不是傳遞一個(gè)標(biāo)準(zhǔn)的變量作為參數(shù),而是將另一函數(shù)作為參數(shù)傳遞到調(diào)用的函數(shù)中。
# 變量函數(shù)
<?php
// 通過(guò)可變變量調(diào)用函數(shù),也相當(dāng)于一種回調(diào)
// 函數(shù)名是可以放在變量里的,通過(guò)變量名調(diào)用
function one($i){
if($i % 3 == 0) return true;
return false;
}
function two($i){
if($i % 4 == 0) return true;
return false;
}
$result = "one";
var_dump($result(10)); //false;
var_dump($result(9)); //true;
<?php
# 使用變量函數(shù)聲明和應(yīng)用的回調(diào)函數(shù)
function one($num){
if($num % 3 == 0) return true;
return false;
}
//過(guò)濾回文數(shù)(11,22,33)
function two($num){
if($num == strrev($num)) return true;
return false;
}
function filter($fun){
for($i = 0; $i < 100; $i ){
if($fun($i)) continue;
echo $i;
echo "<br />";
}
}
filter("one");
filter("two");
<?php
# 借助`call_user_func_array()`函數(shù)自定義回調(diào)函數(shù)
function demo($msg1, $msg2){
echo $msg1;
echo "<hr />";
echo $msg2;
}
// 比較少用
call_user_func_array("demo", ["信息1", "信息2"]);
來(lái)源:https://www./content-1-259551.html
|