最近再做一個有關於考試系統的項目,是檢驗一個自己的php基礎,屬於一個比較簡單的項目吧,但是卻遇到了諸多困難呀!
廢話不多說,直接上乾貨:什麼是PHP匿名函數? 看官方解釋:
匿名函數(Anonymous functions),也叫閉包函數(closures),允許 臨時創建一個沒有指定名稱的函數。最經常用作回調函數(callback)參數的值。當然,也有其它應用的情況。
下面是一個匿名函數的實例:
<?php
header("content-type:text/html;charset=utf-8");
//下面我們寫一個匿名函數
$func=function($data){
for($i=0;$i<$data;$i++){
echo $i."<br/>";
}
};
//調用匿名函數
$func(100);
?>
結果是從0到$data-1
閉包函數也可以作爲變量的值來使用。PHP 會自動把此種表達式轉換成內置類 Closure 的對象實例。把一個 closure 對象賦值給一個變量的方式與普通變量賦值的語法是一樣的,最後也要加上分號:
use: use子句 讓匿名函數使用其作用域的變量
下面是幾個小例子,幫助我們去理解:
function test()
{
$param2 = 'every';
// 返回一個匿名函數
return function ($param1) use ($param2) {
// use子句 讓匿名函數使用其作用域的變量
$param2 .= 'one';
print $param1 . ' ' . $param2;
};
}
$anonymous_func = test();
$anonymous_func('hello');
function test()
{
$param2 = 'everyone';
$func = function ($param1) use ($param2) {
// use子句 讓匿名函數使用其父作用域的變量
print $param1 . ' ' . $param2;
};
$param2 = 'everybody';
return $func;
}
$anonymous_func = test();
$anonymous_func('hello');
function test()
{
$param2 = 'everyone';
$func = function ($param1) use (&$param2) {
// use子句 讓匿名函數使用其父作用域的變量
print $param1 . ' ' . $param2;
};
$param2 = 'everybody';
return $func;
}
$anonymous_func = test();
$anonymous_func('hello');
自己動手寫一下,注意觀察運行結果哦