


Das kumulative Problem und die Lösung von Rückruffunktionen in foreach
-Schleife
In diesem Artikel werden die kumulativen Ergebnisseprobleme erörtert, die bei der Verwendung von Rückruffunktionen in foreach
-Schleifen auftreten können und entsprechende Lösungen bereitstellen.
Problembeschreibung
Wenn Sie foreach
Schleife verwenden, um die Daten zu iterieren und die Rückruffunktion getchildareaid
aufzurufen, um die Subregion-ID zu erhalten, wird festgestellt, dass die Ergebnisse akkumuliert werden. Der Code ist wie folgt:
foreach ($ Towns als $ key => $ val) { $ as AreaIdarr = getChildareAid ($ val ['id']); $ result [$ val ['name']] = $ Worker :: WHERE ('Area_ID', 'in', $ aibleIdarr)-> count (); }
Die Rückruffunktion getchildareaid
ist wie folgt definiert:
Funktion getChildaiid ($ id) { statische Fläche; $ Area = $ Area ?? Neue \ app \ Common \ Modell \ Area; $ result = collection ($ area-> wob static $ res = []; if ($ result) { foreach ($ ergeben als $ key => $ val) { $ res [] = $ val ['id']; getChildareaiid ($ val ['id']); } } Return $ res; }
Das Problem ist, dass die getchildareaid
-Funktion die statische Variable $res
verwendet, wodurch sich jedes Mal, wenn sie aufgerufen wird, ansammelt, anstatt jedes Mal unabhängig zu berechnen.
Problemanalyse
static $res = [];
deklariert eine statische Variable in der getchildareaid
-Funktion. Statische Variablen werden nach Abschluss des Funktionsaufrufs nicht zerstört und ihre Werte werden in nachfolgenden Aufrufen beibehalten. Jedes Mal, wenn foreach
-Schleifen getchildareaid
ruft, sammelt $res
neue Ergebnisse, was schließlich zu einem Fehler im Ergebnis führt.
Lösung
Um dieses Problem zu lösen und statische Variablen zu verwenden, können die folgenden zwei Methoden verwendet werden:
Schreiben Sie die Funktion neu, verwenden Sie lokale Variablen: Erstellen Sie eine neue Funktion, anstatt die statische Variable
$res
zu verwenden, verwenden Sie jedoch lokale Variablen, um die Ergebnisse jedes Aufrufs zu speichern.Ändern Sie vorhandene Funktionen und eliminieren Sie statische Variablen: Ändern Sie die
getchildareaid
-Funktion, entfernen Sie statische Variable$res
und geben Sie ein neues Array zurück, wenn Sie rekursiv aufgerufen werden, um die Akkumulation von Ergebnissen zu vermeiden. Die modifizierte Funktion lautet wie folgt:
Funktion getChildareaid ($ id) { $ Area = new \ app \ Common \ Model \ Area; $ result = collection ($ area-> wob $ res = []; if ($ result) { foreach ($ ergeben als $ key => $ val) { $ res [] = $ val ['id']; $ res = array_merge ($ res, getChildareAid ($ val ['id'])); } } Return $ res; }
Diese modifizierte Funktion erstellt jedes Mal ein neues $res
-Array, wenn es rekursiv bezeichnet wird und die rekursiven Ergebnisse in den aktuellen $res
zusammenfasst, wodurch das Problem der Ergebnisakkumulation vermieden wird. Welche die gewählte Lösung zu wählen ist, hängt von der Gesamtstruktur und Wartbarkeit des Codes ab. Normalerweise ist das Umschreiben von Funktionen klarer und leichter zu verstehen.
Durch die oben genannten Methoden kann das Problem der Rückruffunktion in foreach
-Schleife effektiv gelöst werden, um sicherzustellen, dass das richtige Ergebnis jedes Mal erzielt werden kann, wenn die Rückruffunktion aufgerufen wird.
Das obige ist der detaillierte Inhalt vonWarum tritt das Problem der Ergebnisakkumulation bei der Verwendung von Rückruffunktionen in foreach -Schleifen auf? Wie löst ich es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Die Absolute -Sitzungs -Zeitlimit startet zum Zeitpunkt der Erstellung der Sitzung, während eine Zeitlimit in der Leerlaufsitzung zum Zeitpunkt der No -Operation des Benutzers beginnt. Das Absolute -Sitzungs -Zeitlimit ist für Szenarien geeignet, in denen eine strenge Kontrolle des Sitzungslebenszyklus erforderlich ist, z. B. finanzielle Anwendungen. Das Timeout der Leerlaufsitzung eignet sich für Anwendungen, die die Benutzer für lange Zeit aktiv halten, z. B. soziale Medien.

Der Serversitzungsausfall kann durch Befolgen der Schritte gelöst werden: 1. Überprüfen Sie die Serverkonfiguration, um sicherzustellen, dass die Sitzung korrekt festgelegt wird. 2. Überprüfen Sie die Client -Cookies, bestätigen Sie, dass der Browser es unterstützt und korrekt senden. 3. Überprüfen Sie die Speicherdienste wie Redis, um sicherzustellen, dass sie normal arbeiten. 4. Überprüfen Sie den Anwendungscode, um die korrekte Sitzungslogik sicherzustellen. Durch diese Schritte können Konversationsprobleme effektiv diagnostiziert und repariert werden und die Benutzererfahrung verbessert werden.

Session_Start () iscrucialinphPFormAnagingUSSERSIONS.1) ItinitiatesanewSessionifnoneExists, 2) Wiederaufnahmen und 3) setaSessionCookieforContinuityAcrossRequests, aktivierende Anwendungen wie

Das Festlegen des HTTPonly -Flags ist für Sitzungscookies von entscheidender Bedeutung, da es effektiv verhindern und die Informationen zur Benutzersitzung schützen kann. Insbesondere 1) Das Httponly -Flag verhindert, dass JavaScript auf Cookies zugreift, 2) Das Flag kann durch SetCookies eingestellt werden und in PHP und Flasche 3), obwohl es nicht von allen Angriffen von allen Angriffen verhindert werden kann, Teil der Gesamtsicherheitsrichtlinie sein sollte.

PhpSsionSsionSolvetheProblemofMaintainingStateAcrossmultipehttprequestsBoringDataontheserverandassociatingitittprequests.1) Sie starteten die Stundeataserver-Seite, typischerweise infileSordatabasen, undusaSasionIdinacookookookotenData

PHPSSIONS CANSTORESTRINGEN, ZUGNALTEN, ARRAYS, ANDOBjekte.1.

TostartaphpSession, useSession_start () atthescript'Sbeginning.1) PlaCEITBEFOREANYOUTPUTTOTHESESSIONSCOOKIE.2) useSsionsforuserDatalikeloginStatusOrShopingCarts

Die Sitzung der Sitzung bezieht sich auf die Generierung einer neuen Sitzungs -ID und die Ungültigmachung der alten ID, wenn der Benutzer sensible Vorgänge bei festgelegten Sitzungsangriffen ausführt. Die Implementierungsschritte umfassen: 1. Erkennen sensibler Vorgänge, 2. Erstellen neuer Sitzungs-ID, 3..


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Dreamweaver CS6
Visuelle Webentwicklungstools

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor
