4

PHP バージョン 5.2.7 での解決について質問があります。エラー Parse error: syntax error, unexpected T_FUNCTION in /home/ ... /mainMenu.php on line 56 が表示されます。コードは次のとおりです。

class MainMenu {
    ...
    private static function toRec($arr) {
        ...

        usort($newArr, function($a, $b) {//this was line 56
            return $a['nav_order'] - $b['nav_order'];
        });
        ...
    }
    ...

}

php 5.2の代替は何ですか?

ありがとうございました

4

4 に答える 4

8

お気づきのとおり、インライン関数の構文は PHP 5.3 以降でのみ有効です。PHP 5.2 では使用できません。

別の方法は、代わりに関数の名前を文字列として指定し、その名前で関数を個別に宣言することです。これについては、 usort() のマニュアル ページにかなり詳しく記載されているので、ここでは詳しく説明しません。

も使用できますcreate_function()。これは、PHP 5.2 のコードを視覚的に 5.3 のように見せる最も近い方法かもしれませんが、いくつかの理由からこれを行わないことを強くお勧めします。

最後に、5.2 からアップグレードすることを強くお勧めします。これが難しい場合があることは承知していますが、実際には、PHP 5.2 は 2 年以上前にサポート終了と宣言されました。その間、セキュリティ更新は行われておらず、大きな穴がいくつかあります。それでも 5.2 にこだわっている場合は、ますます遅れをとっていることになります。5.5 が間もなくリリースされるため、5.3 でさえ近い将来にサポートが終了します。

于 2013-04-15T12:48:42.917 に答える
0

us usort の正しい構文は

usort($a, "FUNCTION_NAME");

function FUNCTION_NAME(){
}
于 2013-04-15T12:37:07.967 に答える