PHP - Ändern aktuelle Objekt in der foreach-Schleife
Ich Frage mich, ob es möglich ist, Bearbeiten Sie das aktuelle Objekt, das behandelt wird, innerhalb einer foreach
Schleife
Arbeite ich mit einem array von Objekten $questions
und ich will durch zu gehen und suchen Sie die Antworten im Zusammenhang mit dieser Frage-Objekt in meiner db. Also für jede Frage, geh und hol die Antwort von Objekten und update der aktuellen $question
innen meine foreach
Schleife, so kann ich output/Prozess anderswo.
foreach($questions as $question){
$question['answers'] = $answers_model->get_answers_by_question_id($question['question_id']);
}
wie über Referenzen?
Als beide ArtjomKurapov und @topener schlug vor, ich war auf der Suche nach "pass by reference' mit & - Zeichen. Vielen Dank, Freunde 🙂 habt einen schönen Tag
genial. Könntest du bitte markieren Sie meine Antwort als beste, wenn es dir geholfen?
Als beide ArtjomKurapov und @topener schlug vor, ich war auf der Suche nach "pass by reference' mit & - Zeichen. Vielen Dank, Freunde 🙂 habt einen schönen Tag
genial. Könntest du bitte markieren Sie meine Antwort als beste, wenn es dir geholfen?
InformationsquelleAutor Garbit | 2012-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es 2 Möglichkeiten, dies zu tun
Dieser Weise sparen Sie die Taste, so können Sie aktualisieren Sie es wieder in die main
$questions
variableoder
Hinzufügen der
&
halten die$questions
aktualisiert. Aber ich würde sagen das erste ist empfehlenswert, auch wenn diese kürzer ist (siehe Kommentar von Paystey)Pro der PHP -
foreach
- Dokumentation:Verweise in
foreach
ist wirklich nicht zu empfehlen, die Art und Weise derforeach
geht um den Wert Teil der Schleife Ergebnisse in unpredicatble Verhalten. Es kann länger sein, aber Sie sind weit sicherere Methode 1 verwenden, hier.können Sie nennen Ihre Quellen oder geben Sie eine detaillierte Erklärung ?
Warum sollte die Manipulation von Referenzen unsicher sein? Ist C/C++, wo Sie zu manipulieren, Verweise unsicher? Es ist an Ihnen, es sicher ist oder nicht, nicht die Sprache.
Paystey nicht sagen, Verweise "im Allgemeinen", aber in
foreach
Bezug auf horror wie diese: stackoverflow.com/questions/3307409/... (@Nico, übrigens auch.)InformationsquelleAutor Rene Pot
Sicherlich mit
array_map
und wenn Sie eine container-ImplementierungArrayAccess
abzuleiten Objekte nur um eine intelligente, semantische Weg zu gehen?Array anzeigen Semantik sind ähnlich wie in den meisten Sprachen und Implementierungen, die ich gesehen habe. Es ist entworfen, um wieder eine modifizierte array basiert auf der Eingabe-array-element (high level ignorieren Sprache compile/runtime-Typ-Präferenz); eine Schleife gedacht, um mehr Logik.
Zum abrufen von Objekten, die von ID /PK, abhängig davon, ob Sie SQL oder nicht (es scheint vorgeschlagen), würde ich einen filter verwenden, um sicherzustellen, dass ich eine Reihe von gültigen PK ist, dann implodieren die mit Komma und ebenfalls in eine SQL -
IN()
- Klausel, um das Ergebnis-set. Es macht einen Aufruf, anstelle von mehreren, über SQL, Optimierung, ein bisschen von dercall->wait
Zyklus. Am wichtigsten ist mein code Lesen würde gut zu jemanden, der aus jeder Sprache mit einem hohen Maß an Kompetenz und wir laufen nicht in die Veränderlichkeit Probleme.vs
Wenn Sie wissen, was Sie tun, nie haben Veränderlichkeit Probleme (in Anbetracht, wenn Sie beabsichtigen, auf überschreiben
$arr
konnte man immer$arr = array_map
und explizit sein.InformationsquelleAutor MrMesees