Ich habe folgenden Code:
function lower_than_10($i) {
return ($i < 10);
}
mit denen ich ein Array wie folgt filtern kann:
$arr = array(7, 8, 9, 10, 11, 12, 13);
$new_arr = array_filter($arr, 'lower_than_10');
Wie kann ich lower_than_10 Argumente hinzufügen, damit es auch die Nummer akzeptiert, gegen die geprüft werden soll? Wie, wenn ich das habe:
function lower_than($i, $num) {
return ($i < $num);
}
Wie rufe ich es von array_filter auf, indem ich 10 an $ num oder eine andere Nummer übergebe?
array_filter
? Es ist einfach eincallable
; im obigen Fall passend zu "Typ 3: Objektmethodenaufruf":array(<instance>, <method-name>)
vgl. PHP: Callbacks / Callables - Handbuch .Wenn Sie PHP 5.3 und höher verwenden, können Sie Closure verwenden , um Ihren Code zu vereinfachen:
quelle
use
Wort verwenden können, um dem Lambda zusätzliche Parameter bereitzustellen. Danke für diesen wertvollen Hinweis! :)In PHP 5.3 oder besser können Sie einen Abschluss verwenden :
quelle
create_function()
.create_function()
ist im Grundeeval()
mit einem anderen Namen und ist genauso böse. Von der Verwendung sollte abgeraten werden. Die verrückte klassenbasierte Problemumgehung in der akzeptierten Antwort ist eine bessere Lösung alscreate_function()
in diesem Fall.Wenn mehrere Parameter an die Funktion übergeben werden müssen, können Sie sie mit "," an die use-Anweisung anhängen:
quelle
In Erweiterung zur Jensgramm- Antwort können Sie mithilfe der
__invoke()
Magie-Methode etwas mehr Magie hinzufügen .Auf diese Weise können Sie dies tun
quelle
Auf diese Weise können Sie Elemente in mehrdimensionalen Arrays filtern:
quelle