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

搜索
博主信息
博文 11
粉絲 0
評論 0
訪問量 13135
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP函數(shù)的返回值與參數(shù),匿名函數(shù)與變量作用域的總結(jié)與實(shí)例
小雜魚
原創(chuàng)
841人瀏覽過

函數(shù)

1.完成特定功能的代碼塊;
2.分為命名函數(shù)(全局成員不受作用域限制)和匿名函數(shù)

命名函數(shù)

function 函數(shù)名稱([參數(shù)列表-形參])
{
函數(shù)體
return 返回值
}

  1. //不受作用域限制可以在函數(shù)上面調(diào)用也可以在函數(shù)下面調(diào)用
  2. demo(22,2) // 11
  3. function demo()
  4. {
  5. retuen $one / $two;
  6. }
  7. demo(22,2) // 11

函數(shù)返回值

1.return只能返回單個值;如果想返回多個值,可以返回一個數(shù)組或?qū)ο螅?br>2.return后面的代碼不會被執(zhí)行;

  1. function demo($one, $two)
  2. {
  3. retuen $one / $two;
  4. echo '你好';
  5. }
  6. demo(22,2) //11;
  7. 沒有執(zhí)行echo輸出'你好'

return可以返回的內(nèi)容

  1. function demo($one, $two)
  2. {
  3. return sha1('ipnx.cn');
  4. //string(40) "9210325b59990016a4d9bf6709670b7dc8ab4d02"
  5. return md5('ipnx.cn');
  6. //string(32) "372dba858dc62fee52a552a044caa82e"
  7. return 1 == 1;
  8. //bool(true)
  9. return new StdClass();
  10. //object(stdClass)#1 (0) { }
  11. return array('11','22');
  12. //array(2) { [0]=> string(2) "11" [1]=> string(2) "22" }
  13. return 22.22;
  14. //float(22.22)
  15. return '你好';
  16. //string(6) "你好"
  17. return true;
  18. //bool(true)
  19. }
  20. var_dump(demo());

return 返回多個值的方式

  1. //數(shù)組
  2. function demo()
  3. {
  4. return ['name' => 'ccc', 'gender' => 'ddd'];
  5. }
  6. $obj = demo();
  7. var_dump($obj);//array(2) { ["name"]=> string(3) "ccc" ["gender"]=> string(3) "ddd" }
  8. echo $obj['name']; //ccc
  9. echo $obj['gender']; //ddd
  1. //對象
  2. function demo()
  3. {
  4. return new class()
  5. {
  6. public $name = 'ccc';
  7. public $gender = 'ddd';
  8. };
  9. }
  10. $obj = demo();
  11. var_dump($obj); //object(class@anonymous)#1 (2) { ["name"]=> string(3) "ccc" ["gender"]=> string(3) "ddd" }
  12. echo $obj -> name; //ccc
  13. echo $obj -> gender; //ddd
  1. //json字符串
  2. function demo()
  3. {
  4. //json_encode(參數(shù))將數(shù)組轉(zhuǎn)為json字符串
  5. return json_encode(['status' => 1, 'msg' => '驗(yàn)證成功']);
  6. }
  7. $obj = demo();
  8. var_dump($obj); //string(45) "{"status":1,"msg":"\u9a8c\u8bc1\u6210\u529f"}"
  9. /**
  10. * json_encode(參數(shù),320)將數(shù)組轉(zhuǎn)為json字符串,第二個參數(shù)320,中文不轉(zhuǎn)為unicode同時(shí)不轉(zhuǎn)義反斜杠;
  11. * JSON_UNESCAPED_UNICODE對應(yīng)數(shù)字256 => 中文不轉(zhuǎn)為unicode;
  12. * JSON_UNESCAPED_SLASHES對應(yīng)數(shù)字64 => 不轉(zhuǎn)義反斜杠;
  13. * son_encode(['status' => 1, 'msg' => '驗(yàn)證成功'], 320) => string(33) "{"status":1,"msg":"驗(yàn)證成功"}"
  14. */
  15. var_dump( json_decode($obj); //object(stdClass)#1 (2) { ["status"]=> int(1) ["msg"]=> string(12) "驗(yàn)證成功" } =>是個對象
  16. /**
  17. * json_decode(參數(shù),boolean);將json字符串轉(zhuǎn)為數(shù)組
  18. *false 默認(rèn)值,轉(zhuǎn)為對象;
  19. *true 轉(zhuǎn)為數(shù)組;
  20. *json_decode($obj, true); =>array(2) { ["status"]=> int(1) ["msg"]=> string(12) "驗(yàn)證成功" }
  21. */

函數(shù)參數(shù)

1.可以有多個參數(shù), 以英文逗號 , 隔開;
2.形參可以有默認(rèn)值;
3.實(shí)參會替換掉形參;
4.實(shí)參與形參存在從左向右一 一對應(yīng), 如果沒對應(yīng)就會報(bào)錯(實(shí)參的第一個值默認(rèn)對應(yīng)形參的第一個值);

  1. //形參都沒有默認(rèn)值
  2. function demo($one, $two)
  3. {
  4. return $one + $two;
  5. }
  6. echo demo() //報(bào)錯
  7. echo demo(1,2) //3
  8. //形參都有默認(rèn)值,實(shí)參會替換掉形參
  9. function demo1($one = 1, $two = 2)
  10. {
  11. return $one + $two;
  12. }
  13. echo demo1() //3
  14. echo demo1(3, 4) //7
  15. //第二個形參有默認(rèn)值,實(shí)參替換第一個形參,第二個形參使用默認(rèn)值
  16. function demo2($one, $two = 2)
  17. {
  18. return $one + $two;
  19. }
  20. echo demo2(1) //3
  21. //第一個形參有默認(rèn)值,實(shí)參替換第一個形參,第二個形參沒有默認(rèn)值
  22. function demo3($one = 1, $two)
  23. {
  24. return $one + $two;
  25. }
  26. echo demo3(2) //報(bào)錯

剩余參數(shù) …

適用于參數(shù)個數(shù)不確定的時(shí)候

  1. //在形參中表示收集的作用,在實(shí)參中表示展開的作用
  2. $arr = [555, 666, 777, 888];
  3. function demo(...$args)
  4. {
  5. var_dump($args);
  6. }
  7. demo(111, 222, 333, 444)
  8. //array(4) { [0]=> int(111) [1]=> int(222) [2]=> int(333) [3]=> int(444) }
  9. demo(...$arr)
  10. //array(4) { [0]=> int(555) [1]=> int(666) [2]=> int(777) [3]=> int(888) }

匿名函數(shù)

1.匿名函數(shù)又叫閉包c(diǎn)losure, 指允許臨時(shí)創(chuàng)建的一個沒有名字的函數(shù)
2.匿名函數(shù)通常需要賦給一個變量,所以匿名函數(shù)的作用域問題通常指閉包中變量的作用域問題
3.匿名函數(shù)需要在{}花括號后面加;分號
4.閉包通常作為函數(shù)的返回值使用;
5.通過引用傳值的方式可以改變?nèi)肿兞可舷挛牡闹?/p>

  1. //受作用域限制不可以在函數(shù)上面調(diào)用,只可以在函數(shù)下面調(diào)用
  2. //echo $demo(1,2); //報(bào)錯
  3. $demo = function($one, $two)
  4. {
  5. return $one + $two;
  6. };
  7. echo $demo(1,2); //3
  1. //作為函數(shù)的返回值
  2. function getInfo($name)
  3. {
  4. return function($gender) use ($name)
  5. {
  6. return "名字叫{$name}, 性別是{$gender}";
  7. };
  8. }
  9. echo getInfo('ccc'); //報(bào)錯 因?yàn)榉祷氐牟皇亲址情]包函數(shù)
  10. //解決辦法1:直接將第二個參數(shù)傳進(jìn)去
  11. echo $getInfo('ccc')('ddd'); ////名字叫ccc, 性別是ddd
  12. //解決辦法2:先賦給一個變量再傳第二個參數(shù)
  13. $closure = getInfo('ccc');
  14. echo $closure('ddd'); //名字叫ccc, 性別是ddd
  1. //改變?nèi)肿兞康闹?/span>
  2. $name = 'ccc';
  3. $demo = function($newName) use ($name)
  4. {
  5. $name = $newName;
  6. };
  7. $demo('eee');
  8. echo $name; //ccc 沒有改變
  9. //引用賦值&
  10. $demo = function($newName) use (&$name)
  11. {
  12. $name = $newName;
  13. };
  14. $demo('eee');
  15. echo $name; //eee 有改變

變量的作用域

全局變量

函數(shù)體外聲明的變量
全局變量在函數(shù)體內(nèi)是無法訪問的;命名函數(shù)解決辦法是用關(guān)鍵字global超全局變量$GLOBALS;匿名函數(shù)解決辦法是用use();

  1. //命名函數(shù)
  2. $name = 'ccc';
  3. $gender = 'ddd';
  4. function getInfo()
  5. {
  6. return "名字叫{$name},性別是{$gender}";
  7. }
  8. echo getInfo(); //報(bào)錯
  9. //使用關(guān)鍵字global
  10. function getInfo_pro1()
  11. {
  12. global $name, $gender;
  13. return "名字叫{$name},性別是{$gender}";
  14. }
  15. echo getInfo_pro1(); //名字叫ccc,性別是ddd
  16. //使用超全局變量$GLOBALS
  17. function getInfo_pro2()
  18. {
  19. return "名字叫{$GLOBALS['name']},性別是{$GLOBALS['gender']}";
  20. }
  21. echo getInfo_pro2(); //名字叫ccc,性別是ddd
  22. //匿名函數(shù)
  23. $name = 'ccc';
  24. $gender = 'ddd';
  25. $getInfo = function()
  26. {
  27. return "名字叫{$name},性別是{$gender}";
  28. };
  29. echo $getInfo(); //報(bào)錯
  30. $getInfo = function() use ($name, $gender)
  31. {
  32. return "名字叫{$name},性別是{$gender}";
  33. };
  34. echo $getInfo(); //名字叫ccc,性別是ddd
局部變量

在函數(shù)體內(nèi)聲明的變量
局部變量在函數(shù)體外無法訪問

  1. function getInfo()
  2. {
  3. $name = 'ccc';
  4. $gender = 'ddd';
  5. return "名字叫{$name},性別是{$gender}";
  6. }
  7. echo getInfo(); //名字叫ccc,性別是ddd
  8. echo $name //報(bào)錯
批改老師:PHPzPHPz

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

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

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

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