Gibt es ein PHP-Äquivalent der JavaScript-Funktion Array.prototype.some ()

8

In JavaScript können wir Folgendes tun:

%Vor%

Ссылка

Gibt es ein PHP-Äquivalent der Funktion some ()?

    
Rory 05.10.2016, 13:45
quelle

4 Antworten

8

Nein, es gibt kein Kurzschluss in der PHP-Standardbibliothek. Es gibt eine beliebige Anzahl von Nicht-Kurzschlusslösungen, unter denen array_reduce wahrscheinlich am besten passt:

%Vor%

Es kann sich lohnen, eigene some / any / all -Funktionen zu implementieren oder eine Bibliothek zu verwenden, die eine Sammlung von funktionalen Programmiergrundelementen wie diesem bereitstellt, z. Ссылка .

    
deceze 05.10.2016, 13:54
quelle
7

Es ist nicht enthalten, aber sie sind einfach zu erstellen. Dies verwendet die SRFI-1 Namen any und every , kann aber umbenannt werden some und all :

%Vor%     
Sylwester 05.10.2016 14:51
quelle
0

Es gibt array_filter (), das eine Teilmenge des gegebenen Arrays basierend auf dem Rückgabewert des gegebenen Callbacks zurückgibt. Wenn die Teilmenge leer ist, entspricht sie Some () und gibt false zurück. Wenn sie nicht leer ist, stimmt Some () mit true überein.

%Vor%

Dieser Ansatz schließt jedoch nicht kurz und die Leistung ist umgekehrt proportional zur Größe des Arrays. Dies sollte jedoch in der realen Welt keine Rolle spielen, da das Array immer noch ziemlich groß werden muss, oder der array_filter oft aufgerufen wird, bevor Sie einen Einfluss auf die Leistung bemerken.

Wenn die Leistung vorrangig ist, müssen Sie das Array selbst durchlaufen und aus der Schleife ausbrechen, sobald Sie eine Übereinstimmung gefunden haben.

%Vor%     
GordonM 05.10.2016 13:51
quelle
-3

Verwenden Sie array_filter und stellen Sie einen Rückruf bereit. Wickeln Sie dies in eine andere Funktion ein, um zu zählen, ob es Ergebnisse gibt

%Vor%     
R. Chappell 05.10.2016 13:48
quelle