4

PHP 5.3 ではクロージャのサポートが追加されました。配列全体ではなく、特定の配列要素を閉じることができるかどうか疑問に思っていました。

たとえば、次のようにできます。

$a = array('a', 'e', 'i', 'o', 'u');
$f = function($b) use($a){
    echo $a[2].$b;
};
$f('!'); // echos "i!"

しかし、周りだけを閉じる方法はあり$a[2]ますか? このようなものかもしれません:

$f = function($b) use($a[2] as $c){
    echo $c.$b;
};

これは機能しません。

解析エラー: 構文エラー、予期しない '['、',' または ')' が必要です

明らかに、私はこれを行うことができます:

$c = $a[2];
$f = function($b) use($c){
    echo $c.$b;
};

しかし、それよりも良い方法があるはずだと思いました。では、配列内の特定の変数を閉じる方法はありますか?

4

1 に答える 1

3

コメンテーターがすでに述べたように:いいえ。

現時点でuseは、T_Variable ($var) または Reference T_Variable (&$var) のみが必要です。しかし、あなたの例のように
利用できるパッチがあります。gistasで見つけることができます。

将来のリリースで可能になるように、これはいつか master にマージされるかもしれません。

しかし、私は本当にこれが大きな機能だとは思いません:-)

そのため、その間は別のソリューションを使用する必要があります。

于 2012-05-31T21:31:41.470 に答える