更新:はPHP7から始めて、それが構文を使用してデリファレンス無名関数を使用できるようになりました:匿名関数の戻り値
$array[] = [
'new' => (function()
{
...
return mt_rand();
})(),
'or' => getClosure()()
]
オリジナルのポスト:私は最近、いくつかのことを試してきました、匿名関数の戻り値を使う方法があるのだろうかと疑問に思った。
私はforループを使って配列の各値にデータベース呼び出しあります:
for($i = 0; $i != 10; $i++)
{
$array[] = [
'new' => function(){
// some proccesing here maybe
// lets use mt_rand for this example.
return mt_rand();
},
'old' => function(){
return mt_rand();
}
];
}
または多分
echo function(){
// again, we'll just use mt_rand
return mt_rand();
};
は、これらの両方closure
クラスを返します。上の例では、実際に戻り値を配列やエコーに戻す方法はありますか?
アップデート:私はこれがそうできません確立してきた、機能要求は、ここで見つけることができます:http://bugs.php.net/bug.php?id=64608
はあなたが本当に匿名関数が必要ですか?普通のものが必要で、ループの中で呼び出すように聞こえます。 – kero
あなたはどのPHPバージョンに依存していますか?php 5.4ではこれが可能かもしれませんが、古いパッケージ(つまり、Debian Squeeze私はPHP 5.3を実行することを知っている)はしません。 –
@ JulianH.Lam私のサンプルはPHP 5.4.13でテストされました –