~~~
/**
* 一個利用閉包的計數器產生器
* 這里其實借鑒的是python中介紹閉包時的例子...
* 我們可以這樣考慮:
* 1. counter函數每次調用, 創建一個局部變量$counter, 初始化為1.
* 2. 然后創建一個閉包, 閉包產生了對局部變量$counter的引用.
* 3. 函數counter返回創建的閉包, 并銷毀局部變量, 但此時有閉包對$counter的引用,
* 它并不會被回收, 因此, 我們可以這樣理解, 被函數counter返回的閉包, 攜帶了一個游離態的
* 變量.
* 4. 由于每次調用counter都會創建獨立的$counter和閉包, 因此返回的閉包相互之間是獨立的.
* 5. 執行被返回的閉包, 對其攜帶的游離態變量自增并返回, 得到的就是一個計數器.
* 結論: 此函數可以用來生成相互獨立的計數器.
*/
function counter() {
$counter = 1;
return function() use(&$counter) {return $counter ++;};
}
$counter1 = counter();
$counter2 = counter();
echo "counter1: " . $counter1() . "<br />/n";
echo "counter1: " . $counter1() . "<br />/n";
echo "counter1: " . $counter1() . "<br />/n";
echo "counter1: " . $counter1() . "<br />/n";
echo "counter2: " . $counter2() . "<br />/n";
echo "counter2: " . $counter2() . "<br />/n";
echo "counter2: " . $counter2() . "<br />/n";
echo "counter2: " . $counter2() . "<br />/n";
?>
~~~
- 目錄
- Array
- array_column()
- 數組和變量
- compact() 函數
- extract() 函數
- Url
- base64_encode — 使用 MIME base64 對數據進行編碼
- 圖像
- getimagesize()
- 隨機數
- getrandmax
- mt_getrandmax
- mt_rand
- rand
- empty函數
- exec()函數
- 權限修改
- 可變函數
- 函數閉包
- 報警級別
- 持續函數
- 自定義
- 字符處理
- 中文首字母
- 隨機字符串
- url函數
- parse_url_param
- 頁面采集
- 簡單采集
- Referer采集
- CURL
- 發送json數據
- Curl多線程
- 文件處理
- 遞歸刪除
- 圖片顯示
- 類方法
- 保留字
- 檢查類文件名稱
- Cookie
- 數組
- 數學函數
- 第三方函數庫
- 精度計算
- BC Math
- 計算執行時間
- 日期時間
- 時間戳
- header
- 調試函數
- get_class
- get_class_methods
- 數組函數
- array_intersect_key()
- 二維數組
- Base64編碼
- URL安全
- 加密擴展
- Hash函數
- hash_file
- hash_hmac
- hash_algos
- 文件讀寫
- is_writable()
- file_put_contents()