
批改狀態(tài):合格
老師批語:函數(shù),對于任何一門語言來說, 都處于核心地位, 花再多的時候去研究都是值得的
<?php
//函數(shù)的聲明
//形式參數(shù)可以在前面限定數(shù)據(jù)類型,返回值在圓括號后面":返回數(shù)據(jù)類型"
//function 函數(shù)名(形式參數(shù)列表)
//{
// //函數(shù)體
//}
//函數(shù)的調(diào)用
//函數(shù)名(實際參數(shù)列表);
//獲取兩個字符串拼接后的字符串
function show(string $str1, string $str2): string
{
return $str1 . ' ' . $str2;
}
echo show('hello', 'world');
序號 | 名稱 | 描述 |
---|---|---|
1 | 自定義函數(shù) | 程序員自己定義的函數(shù) |
2 | 系統(tǒng)函數(shù) | PHP內(nèi)置的函數(shù) |
3 | 可變函數(shù) | 變量名當做函數(shù)名 |
4 | 匿名函數(shù) | 函數(shù)名保存到變量中 |
<?php
//函數(shù)的分類
//1.自定義函數(shù)
//之前的兩個字符串拼接的例子就是一個自定義函數(shù)
//2.系統(tǒng)函數(shù)
//獲取當前的日期時間
echo date('Y年m月d日 H:i:s');
echo '<hr>';
//3.可變函數(shù):和可變變量類似
$name = 'display';
function display()
{
return 'hello world';
}
//變量名等價于函數(shù)名
echo $name();
echo '<hr>';
//4.匿名函數(shù),也叫閉包,指沒有函數(shù)名的函數(shù)
//匿名函數(shù)可以使用"use()"訪問父作用域的變量
$str = 'world';
$name = function () use ($str): string {
return 'hello ' . $str;
};
echo $name();
序號 | 類型 | 描述 |
---|---|---|
1 | 單值返回 | 只返回一個值 |
2 | 字符串返回 | 采用字符串拼接的方式返回多個值,是最簡單的一種 |
3 | 返回數(shù)組 | 將需要返回的多個值放到數(shù)組中,返回數(shù)組 |
4 | json返回 | 通用的序列化方式,適用多門語言 |
5 | PHP序列化 | 只適用于PHP |
<?php
//函數(shù)的返回值
//原則單值返回
//如果返回多值:
//1.字符串拼接
function test1()
{
return 'hello ' . 'world';
}
echo test1();
echo '<hr>';
//2.數(shù)組方式返回
function test2()
{
return [
'status' => 1,
'message' => '成功'
];
}
echo '<pre>' . print_r(test2(), true) . '</pre>';
echo '<hr>';
//3.json方式返回
//json:js對象簡譜,是一種數(shù)據(jù)交換格式,早期為XML
//json就是js對象的字符串表示,只不過鍵必須加上雙引號
//序列化:是指將對象的狀態(tài)信息轉(zhuǎn)化為可以存儲和傳輸?shù)母袷降倪^程
//json就是序列化的一種,是通用的序列化格式
function test3()
{
//json編碼
return json_encode([
'status' => 1,
'message' => '成功'
]);
}
$str = test3();
//json解碼
print_r(json_decode($str, true));
echo '<hr>';
//4.PHP序列化
//在PHP中有專門的序列化函數(shù),只在PHP有效
$str = serialize([
'status' => 1,
'message' => '成功'
]);
echo $str;
//PHP反序列化
echo '<pre>' . print_r(unserialize($str), true) . '</pre>';
序號 | 類型 | 描述 |
---|---|---|
1 | 按值傳遞 | 函數(shù)中改變值與原值無關 |
2 | 引用傳遞 | 函數(shù)中改變值與原值有關,相當于齊了一個別名 |
3 | 默認值 | 在不傳遞實參的情況下,使用默認值;默認值從右向左指定 |
4 | 剩余參數(shù) | 在形參和實參不確定個數(shù)的情況下非常有用 |
<?php
//函數(shù)的參數(shù)類型
//1.按值傳遞
function test1(float $value): string
{
return $value *= 2;
}
$value = 100;
echo '改變后的值:', test1($value);
echo '<br>';
echo '原值:', $value;
echo '<hr>';
//2.引用傳遞,相當于起了一個別名
function test2(float &$value): string
{
return $value *= 2;
}
$value = 100;
echo '改變后的值:', test2($value);
echo '<br>';
echo '原值:', $value;
echo '<hr>';
//3.默認值,默認值從右向左指定
function test3(float $num1, float $num2, $op = '+'): string
{
//判斷運算符
switch ($op) {
case '+':
$result = $num1 . '+' . $num2 . '=' . ($num1 + $num2);
break;
case '-':
$result = $num1 . '-' . $num2 . '=' . ($num1 - $num2);
break;
case '*':
$result = $num1 . '*' . $num2 . '=' . ($num1 * $num2);
break;
case '/':
$result = $num1 . '/' . $num2 . '=' . ($num1 / $num2);
break;
default:
$result = '非法的運算符';
}
return $result;
}
echo test3(10, 40), '<br>';
echo test3(10, 40, '*');
echo '<hr>';
//4.剩余參數(shù):如果參數(shù)很多個,就寫很多個形式參數(shù),不太利于開發(fā),這時就可以用剩余參數(shù)
//func_get_arg():獲取實參列表中的某一個索引值
//func_get_args():獲取實參列表值的數(shù)組
//func_num_args():獲取實參列表值的個數(shù)
//實現(xiàn)輸入的數(shù)值的累加和
function test4() : float
{
//初始化計數(shù)器
$total = 0;
//for循環(huán)實現(xiàn)累加功能
for ($i = 0; $i < func_num_args(); $i++) {
$total += func_get_arg($i);
}
return $total;
}
echo test4(10, 20, 30, 40);
echo '<br>';
function test5() : float
{
//初始化計數(shù)器
$total = 0;
//foreach遍歷數(shù)組實現(xiàn)累加功能
foreach (func_get_args() as $item) {
$total += $item;
}
return $total;
}
echo test5(10, 20, 30, 40);
echo '<br>';
function test6() : string
{
//數(shù)組求和
return array_sum(func_get_args());
//數(shù)組求積
// return array_product(func_get_args());
}
echo test6(10, 20, 30, 40);
echo '<br>';
//剩余參數(shù)如果放在形參列表中:將每一個形參打包到一個數(shù)組中
//剩余參數(shù)如果放在實參列表中:將實參數(shù)組打散為每一個實參值
function test7(...$args) : float
{
return array_sum($args);
}
$arr = [10, 20, 30, 40];
echo test7(...$arr);
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號