最近偶然发现了在PHP这个整洁的小
错误或
“功能”:在'usort'中排序函数在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');
它完美的作品时功能内是之外声明myCmpFunc 和/或$ myArray的有不超过2元;)
- 编辑 -
某种联系: PHP Fatal error: Cannot redeclare function
因此,这里是我的问题,然后: 是否有可能在声明功能本地范围?
- 编辑2 -
也许,这非常适用于PHP 5.3刚才读它关闭,yeehaa!
这是个问题吗? – 2011-05-10 15:11:14
编写代码*编译*但是*无效*不构成PHP *错误*。 – 2011-05-10 15:13:21
@ jason-mccreary你是对的。尽管如此,我发现在函数中声明函数并将它们放在外函数的局部范围内是很有用的。 不在PHP中,因为函数总是在全局范围内,我学会了。然后必须使用方法。 – 2011-05-11 06:29:45