Wie kann ich zwei Arrays gleichzeitig durchlaufen? [duplicate]
Lesezeit: 4 Minuten
Ausbeuten
Ich versuche, zwei Arrays zusammen anzuordnen, und die Ergebnisse werden immer wieder falsch angezeigt. Ich zeige Ihnen meinen Code, die Ergebnisse, die ich erhalte, und die Ergebnisse, nach denen ich suche.
Ich glaube, ich mache es einfach falsch, weiß aber nicht, wie ich es sonst machen soll.
Die Ergebnisse, die ich suche, sind die folgenden:
a: 1
b: 1
a: 2
b: 2
a: 3
b: 3
a: 4
b: 4
a: 5
b: 5
Rizier123
Problem
Nun, das Problem ist natürlich Ihre verschachtelte Foreach-Schleife. Denn für jedes Element Ihrer $data1 Array durchschleifen Sie das gesamte $data2 Array (Also insgesamt gibt es $data1 * $data2 Iterationen).
Lösungen
Um dies zu lösen, müssen Sie beide Arrays gleichzeitig durchlaufen.
Notiz: Wenn die Anzahl der Elemente ungleichmäßig ist, werden keine Fehler generiert, es wird nur gedruckt NULL (bedeutet, dass Sie nichts sehen werden)
Notiz: Verwenden array_keys() ist nur so, dass das auch funktioniert, wenn die Arrays nicht die gleichen Schlüssel haben oder assoziativ sind. min() wird verwendet, um nur so viele Elemente zu durchlaufen, wie jedes Array hat
Oder wenn die Arrays nur eindeutige Werte haben, können Sie das tun array_combine() beide Arrays, so dass $data1 kann als Schlüssel und abgerufen werden $data2 als Wert.
Wenn Sie mehr als 2 Arrays gleichzeitig drucken möchten oder nur eine unbekannte Anzahl von Arrays, können Sie die kombinieren array_map() Methode mit a call_user_func_array() Anruf.
Notiz: Da dies irgendwie die verwendet array_map() Methode verhält es sich bei einer ungleichmäßigen Anzahl von Elementen gleich. Da diese Methode auch nur für PHP >=5.6 funktioniert, können Sie einfach die Argumente entfernen und ändern $numbers mit func_get_args() in der foreach-Schleife und dann funktioniert es auch für PHP >=5.3
Ich habe dieses seltsame Problem, anstatt die Werte wiederzugeben, die ich verwende, array_push($somevar, [‘item1’ => $item1, ‘item2’ => $item2]); aber die Registrierung von $somevar als Array innerhalb der Funktion array_map() wird aufgehoben. und ich hatte es als Array außerhalb der Iterationsfunktion gesetzt.
– Ausbeuten
18. August 2015 um 8:12 Uhr
@SarmenB. Bitte posten Sie einen kleinen Link zu einer Online-IDE oder so mit Ihrem aktuellen Code.