亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 26
粉絲 2
評(píng)論 0
訪問量 30338
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP函數(shù)的聲明與調(diào)用及其類型、返回值、參數(shù)和命名空間
leverWang
原創(chuàng)
1328人瀏覽過

1.函數(shù)的聲明與調(diào)用

  1. //函數(shù)是代碼復(fù)用的重要手段, 函數(shù)是通過調(diào)用來執(zhí)行的,函數(shù)命名要有意義,函數(shù)名以數(shù)字或下劃線開頭(不能以數(shù)字開頭):
  2. function 函數(shù)名稱的標(biāo)識(shí)符(參數(shù)列表) {
  3. 函數(shù)體,由一條或多條語句組成,也可以為空
  4. }
  5. //示例:
  6. //聲明函數(shù)demo
  7. function demo($arg){
  8. echo "{$arg}";
  9. }
  10. //調(diào)用函數(shù)
  11. demo($arg='hello world'); //輸出hello world

2.函數(shù)的類型

  • 自定義函數(shù)
  • 系統(tǒng)函數(shù)
  • 可變函數(shù)
  • 匿名函數(shù)

示例:

  1. //1.自定義函數(shù)
  2. //在PHP7,一個(gè)新的功能,返回類型聲明已被引入。返回類型聲明指定一個(gè)函數(shù)返回值的類型
  3. function getnum($arg, $arg1): float
  4. {
  5. return $arg + $arg1;
  6. }
  7. echo '輸出:' . getnum(11.1, 12) . '<hr>';
  8. // 2. 系統(tǒng)函數(shù),php內(nèi)置的函數(shù),可以直接使用
  9. $pwd = '12345678';
  10. //內(nèi)置的加密算法函數(shù)
  11. echo hash('md5', $pwd) . '<br>';
  12. echo sha1($pwd) . '<hr>';
  13. //3. 可變函數(shù),是把函數(shù)名變?yōu)榱硪粋€(gè)變量的值
  14. function add($arg, $arg1): float
  15. {
  16. return $arg + $arg1;
  17. }
  18. $func = 'add';
  19. echo $func(2, 4) . '<hr>';
  20. //4. 匿名函數(shù),也叫閉包函數(shù),允許臨時(shí)創(chuàng)建一個(gè)沒有指定名稱的函數(shù)。最經(jīng)常用作回調(diào)函數(shù)(callback)參數(shù)的值
  21. $demo = function ($str) {
  22. printf("Hello %s <br>", $str);
  23. };
  24. $demo('World');
  25. //閉包可以從父作用域中繼承變量。任何此類變量都應(yīng)該用 use 語言結(jié)構(gòu)傳遞進(jìn)去
  26. //當(dāng)父作用域是全局時(shí)
  27. $num = 2;
  28. $p = function ($arg) use ($num): float {
  29. return $arg * $num;
  30. };
  31. echo '輸出結(jié)果:' . $p(3.5) . '<br>';
  32. //父作用域是父函數(shù)
  33. $data = [
  34. ['name' => 'jack', 'score' => 99],
  35. ['name' => 'Anastasia', 'score' => 40],
  36. ['name' => 'Abraham', 'score' => 80],
  37. ['name' => 'Alexander', 'score' => 59],
  38. ];
  39. $f = function ($data) {
  40. //在匿名函數(shù)后面加上"use(父作用域中的變量)"
  41. $p = function ($line) use ($data) : array {
  42. foreach ($data as $item) {
  43. $str[] = [
  44. 'name'=> $item['name'],'result'=>($item['score'] > $line) ? '合格' : '不合格'
  45. ];
  46. }
  47. return $str;
  48. };
  49. return $p;
  50. };
  51. $s = $f($data)(60);
  52. foreach ($s as $item){
  53. echo $item['name'].':'.$item['result'].'<br>';
  54. }


3.函數(shù)的返回值

示例:

  1. <?php
  2. // 函數(shù)是必須有返回值的,默認(rèn)返回值為null 示例如下:
  3. function demo(){}
  4. var_dump(demo());
  5. echo '<hr>';
  6. // 函數(shù)只能返回單一的值,返回多值有以下幾種方式
  7. // 1.通過字符串拼接
  8. function demo1():string
  9. {
  10. $str1 = 'hello';
  11. $str2 = 'php';
  12. return $str1 . $str2;
  13. }
  14. echo demo1().'<hr>';
  15. // 2.通過數(shù)組的方式
  16. function demo2():array
  17. {
  18. $name = '張三';
  19. $age = 22;
  20. return ['name' => $name,'age' =>$age ];
  21. }
  22. var_dump(demo2()['name']);
  23. echo '<br>',(demo2()['age']),'<hr>';
  24. // 3.通過json對(duì)象字面量字符串的方式
  25. function demo3():string
  26. {
  27. $str1 = 'hello';
  28. $str2 = 'world';
  29. return json_encode(['str1' => $str1,'str2' => $str2]);
  30. }
  31. //輸出json格式數(shù)據(jù)
  32. echo demo3(),'<br>';
  33. // 將json數(shù)據(jù)解碼
  34. print_r(json_decode(demo3()));
  35. echo '<hr>';
  36. // 4.序列化的方式
  37. function demo4():string
  38. {
  39. $name = '張三';
  40. $age = 22;
  41. return serialize(['name' => $name,'age' =>$age ]);
  42. }
  43. //序列化后的數(shù)據(jù)
  44. echo demo4(),'<br>';
  45. // 反序列化: 還原
  46. print_r(unserialize(demo4()));

4.函數(shù)中的參數(shù)

  1. //1.值參數(shù)
  2. $num = 999;
  3. function demo($num): float
  4. {
  5. return $num;
  6. }
  7. //2.引用傳參
  8. $num1 = 666;
  9. //在參數(shù)前添加取地址符&
  10. function demo1(&$num1): float
  11. {
  12. // 函數(shù)內(nèi)部對(duì)參數(shù)的更新會(huì)實(shí)時(shí)映射到外部實(shí)際參數(shù)
  13. return $num1 *= 2;
  14. }
  15. echo $num1, '<br>';//666
  16. echo demo1($num1), '<hr>';//1332
  17. // 3. 默認(rèn)參數(shù)
  18. // 沒有傳參時(shí)默認(rèn)的參數(shù)的值
  19. // 有默認(rèn)值的參數(shù),必須寫到?jīng)]有默認(rèn)值參數(shù)的后面
  20. function demo2($num3, $num4, $n = 3)
  21. {
  22. return $num3 * $num4 * $n;
  23. }
  24. // 沒有傳參數(shù)$n, 此時(shí)會(huì)使用$n的默認(rèn)值3
  25. echo demo2(1, 10) . "<br>";//輸出:30
  26. echo demo2(1, 10, 0.5) . "<hr>";//輸出:5
  27. //4.剩余參數(shù)
  28. //參數(shù)不固定的情況下使用 ...參數(shù)名來表示,將所有參數(shù)整合到數(shù)組中.
  29. //剩余參數(shù)用在函數(shù)的參數(shù)列表中:收集
  30. //剩余參數(shù)用在函數(shù)的調(diào)用表達(dá)式中,是展開
  31. function demo3(...$args)
  32. {
  33. //求傳入?yún)?shù)的和
  34. return array_sum($args);
  35. }
  36. echo demo3(1, 2, 3) . "<br>";//輸出6
  37. // 調(diào)用參數(shù)的數(shù)量不固定的情況
  38. $arr = [1, 2, 3];
  39. $res = demo3(...$arr);
  40. print_r($res);
  41. //5.回調(diào)函數(shù)
  42. //定義一個(gè)數(shù)組
  43. $data = range(1,100);
  44. //將數(shù)組中的每個(gè)值傳到匿名函數(shù)中處理后返回處理以后的新數(shù)組
  45. $arr = array_map(function ($item) {
  46. if ($item % 2 === 0) return $item;
  47. }, $data);
  48. // 過濾掉空值
  49. $res=array_filter($arr);
  50. // 數(shù)組重排 array_values()
  51. var_dump(array_values($res));

5.函數(shù)的命名空間

  1. namespace s1{
  2. function demo1(){
  3. return "這是space1";
  4. }
  5. }
  6. namespace s2{
  7. function demo1(){
  8. return "這是space2";
  9. }
  10. }
  11. namespace {
  12. echo s1\demo1();
  13. }

總結(jié):初步掌握了函數(shù)的基本用法和參數(shù)傳遞,對(duì)回調(diào)函數(shù)的運(yùn)行機(jī)制還是很模糊;

批改老師:GuanhuiGuanhui

批改狀態(tài):合格

老師批語:回調(diào)函數(shù)后面會(huì)老師會(huì)詳細(xì)講的,盡量趕上老師的進(jìn)度!
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)