最近在 PHP 中偶然发现了这个简洁的小错误或“功能”:
function myCmpFunc($a,$b) {
function inner($p) {
// do something
}
$inner_a = inner($a);
$inner_b = inner($b);
if ($inner_a == $inner_b) return 0;
return ($inner_a > $inner_b ? -1 : 1);
}
像这样调用时导致致命错误“无法在...中重新声明函数内部”
usort($myArray, 'myCmpFunc');
当函数inner在myCmpFunc之外声明 和/或 $myArray的元素不超过 2 个时,它可以完美地工作;)
- 编辑 -
不知何故相关: PHP致命错误:无法重新声明函数
那么这是我的问题:是否可以在本地范围内声明函数?
-- 编辑 2 --
也许,这在 PHP 5.3 中运行良好,只是阅读它有闭包,耶哈!