国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

函數(shù)

2019-11-15 02:04:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
函數(shù) - php手冊(cè)筆記用戶(hù)自定義函數(shù)

函數(shù)無(wú)需在調(diào)用前被定義,除非是有條件定義的。

PHP中的所有函數(shù)和類(lèi)都具有全局作用域。PHP不支持函數(shù)重載,也不可能取消定義或者重定義已聲明的函數(shù)。

特意試了下,我的電腦上的PHP遞歸棧的最大深度為100。

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

PHP支持按值傳遞參數(shù)(默認(rèn))、通過(guò)引用傳遞參數(shù)以及默認(rèn)參數(shù)。也支持可變長(zhǎng)度參數(shù)列表。PHP允許使用數(shù)組和特殊類(lèi)型NULL作為默認(rèn)參數(shù)。如果希望允許函數(shù)修改參數(shù)值,必須通過(guò)引用傳遞參數(shù)。

注意!當(dāng)使用默認(rèn)參數(shù)時(shí),任何默認(rèn)參數(shù)必須放在任何非默認(rèn)參數(shù)的右側(cè),否則函數(shù)將不按照預(yù)期工作。

PHP在用戶(hù)自定義函數(shù)中支持可變數(shù)量的參數(shù)列表。在PHP 5.6及以上的版本中,有...語(yǔ)法實(shí)現(xiàn),可以這樣寫(xiě),由于沒(méi)有合適的環(huán)境也無(wú)法測(cè)試。

<?php function sum(...$numbers) {$acc = 0;foreach($numbers as $n) {$acc += $n;}return $acc;}echo sum(1, 2, 3, 4);

當(dāng)然在PHP 5.5等低版本中也可以使用可變數(shù)量的參數(shù)列表。通過(guò)函數(shù)func_num_args()func_get_arg()gunc_get_args()獲得參數(shù)數(shù)目、某一參數(shù)內(nèi)容、參數(shù)數(shù)組。

<?php function sum() {$acc = 0;foreach(func_get_args() as $n) {$acc += $n;}return $acc;}echo sum(1, 2, 3, 4);
返回值

函數(shù)不能返回多個(gè)值,但可以通過(guò)返回一個(gè)數(shù)組來(lái)得到類(lèi)似的效果。

<?php function small_numbers() {return array(0, 1, 2);}list($zero, $one, $two) = small_numbers();echo "$zero  $one  $two";

從函數(shù)返回一個(gè)引用,必須在函數(shù)聲明指派返回值給一個(gè)變量時(shí)都使用引用運(yùn)算符&

<?php function & return_reference() {return $someref;}$newref = & return_reference();
可變函數(shù)

PHP支持可變函數(shù),也就是說(shuō),如果一個(gè)變量名后有圓括號(hào),PHP將尋找與變量的值同名的函數(shù),并且嘗試執(zhí)行它。可變函數(shù)可以用來(lái)實(shí)現(xiàn)回調(diào)函數(shù)、函數(shù)表等,雖然這些我都沒(méi)用過(guò)。

當(dāng)調(diào)用靜態(tài)方法時(shí),函數(shù)調(diào)用要比靜態(tài)屬性?xún)?yōu)先。

內(nèi)部函數(shù)

PHP有很多標(biāo)準(zhǔn)的函數(shù)和結(jié)構(gòu),還有一些函數(shù)需要和特定的PHP擴(kuò)展模塊一起編譯。

如果傳遞給函數(shù)的參數(shù)類(lèi)型與實(shí)際的類(lèi)型不一致,那么函數(shù)的返回值是不確定的。在這種情況下,通常函數(shù)會(huì)返回NULL。但這僅僅是一個(gè)慣例,并不一定如此。

匿名函數(shù)

匿名函數(shù)(Anonymous functions),也叫閉包函數(shù)(closures),允許 臨時(shí)創(chuàng)建一個(gè)沒(méi)有指定名稱(chēng)的函數(shù)。最經(jīng)常用作回調(diào)函數(shù)(callback)參數(shù)的值。

手冊(cè)中的第一個(gè)示例程序是正則表達(dá)式相關(guān)的,不是很了解.第二個(gè)示例程序是一個(gè)匿名函數(shù)變量賦值。注意,匿名函數(shù)變量的定義語(yǔ)句結(jié)尾要加分號(hào)。

<?php $greet = function($name) {echo "Hello $name  ";};$greet("world");$greet('PHP');

第三個(gè)示例程序,關(guān)于從父作用域繼承變量,也沒(méi)看懂,好遺憾。第四個(gè)示例程序,關(guān)于Closures和作用域,和實(shí)際相結(jié)合,不錯(cuò)的,仔細(xì)看看。

這是一個(gè)基本的購(gòu)物車(chē)類(lèi),實(shí)現(xiàn)了添加某數(shù)量的商品并計(jì)算總價(jià)格的功能。其中使用了一個(gè)closure作為回調(diào)函數(shù)。

<?php class Cart {const PRICE_BUTTER = 1.00;const PRICE_MILK = 3.00;const PRICE_EGGS = 6.95;protected $products = array();public function add($product, $quantity) {$this->products[$product] = $quantity;}public function getQuantity($product) {return isset($this->products[$product]) ? $this->products[$product] : FALSE;}public function getTotal($tax) {$total = 0.00;$callback = function($quantity, $product) use ($tax, &$total) {$pricePerItem = constant(__CLASS__ . "::PRICE_" . strtoupper($product));$total += ($pricePerItem * $quantity) * ($tax + 1.0);};array_walk($this->products, $callback);return round($total, 2);}}$mycart = new Cart;$mycart->add('butter', 1);$mycart->add('milk', 3);$mycart->add('eggs', 6);echo $mycart->getTotal(0.05);

注意!匿名函數(shù)語(yǔ)句末尾的分號(hào)一定不要落下!

(全文完)


上一篇:流程控制

下一篇:類(lèi)與對(duì)象

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泸溪县| 和政县| 青阳县| 商丘市| 诏安县| 达州市| 克什克腾旗| 新和县| 抚宁县| 泊头市| 阳城县| 曲阳县| 台北县| 隆子县| 福贡县| 珠海市| 金平| 澄城县| 金川县| 仙游县| 高陵县| 徐闻县| 海伦市| 和静县| 黎城县| 广安市| 泽普县| 延边| 长春市| 德保县| 改则县| 玛纳斯县| 界首市| 余庆县| 安远县| 静宁县| 陇川县| 荣成市| 诸暨市| 孙吴县| 兰西县|