PHP 5.3 引入閉包,提供更優雅的函數式編程風格。本文透過實例解析 use 關鍵字捕獲外部變量、陣列映射轉換場景,並以 5 萬筆資料實測效能差異,給出使用建議。
$data = range(0, 100);
$suffix = '.html';
// 具名函數
function makeSuffix($str, $suffix) {
return $str . $suffix;
}
// 閉包捕獲 $suffix
$new_data = array_map(function($item) use ($suffix) {
return makeSuffix($item, $suffix);
}, $data);
方式 代碼片段 耗時 (秒) 1. foreach 參考修改 foreach ($data as &$v) $v = makeSuffix($v, $suffix);0.0260 2. foreach 新建陣列 foreach ($data as $v) $new[] = makeSuffix($v, $suffix);0.0380 3. array_map + 閉包 array_map(fn($item) => makeSuffix($item, $suffix), $data);0.0470 效能分析與結論
use 綁定機制 + array_map 內部迭代,約為 foreach 參考修改的 1.8 倍fn($x) => $x * 2 語法更簡潔,且自動捕獲外部變量無需 use