最近偶然發現了在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