Ich habe aktuell ein Verständnisproblem mit den Lamdafunktionen ab PHP 5.3.
Wieso funktioniert denn folgendes:
<?
$array = array(0,1,2,3,4,5,6,7,8,9);
$foo = function() use ($array){foreach($array as $v) if($v >= 5) $r[] = $v; return $r;};
foreach($foo() as $var)
echo $var."\n";
?>
Aber dies hier nicht?:
<?
$array = array(0,1,2,3,4,5,6,7,8,9);
foreach(function() use ($array){foreach($array as $v) if($v >= 5) $r[] = $v; return $r;} as $var)
echo $var."\n";
?>
Das wäre also die erste Frage und die zweite: Wenn ich also nun die Funktion erst definiere und in einer Variable speichere um Sie dann mit $foo() aufzurufen, dann kann ich diese doch gleich wie bis PHP 5.2 ganz normal definieren und dann verwenden. So richtig komm ich nicht hinter das Geheimnis. Vielleicht kann mir jemand auf die Sprünge helfen.
Gruß Bimbo