Beim gleichzeitigen Durchlaufen mehrerer Arrays tritt ein häufiges Problem auf Das Problem besteht darin, dass die Ergebnisse aufgrund einer ungeeigneten Schleifenstruktur möglicherweise falsch sind. Betrachten Sie das folgende Beispiel:
$data1 = ['a: 1', 'a: 2', 'a: 3', 'a: 4', 'a: 5']; $data2 = ['b: 1', 'b: 2', 'b: 3', 'b: 4', 'b: 5']; foreach ($data1 as $item1) { foreach ($data2 as $item2) { echo $item1 . '<br/>'; echo $item2 . '<br/>'; echo '<br/><br/>'; } }
Der obige Code verwendet verschachtelte foreach-Schleifen, die zu der folgenden Ausgabe führen:
a: 1 b: 1 a: 1 b: 2 a: 1 b: 3 a: 1 b: 4 a: 1 b: 5
Die erwartete Ausgabe ist jedoch:
a: 1 b: 1 a: 2 b: 2 a: 3 b: 3 a: 4 b: 4 a: 5 b: 5
Das Problem besteht darin, dass die verschachtelte Schleifenstruktur dazu führt, dass jedes Element von $data1 mit jedem Element von $data2 durchlaufen wird. Um die gewünschte Ausgabe zu erzielen, müssen wir beide Arrays gleichzeitig durchlaufen.
Um mehrere Arrays gleichzeitig zu durchlaufen, können Sie verschiedene Methoden verwenden:
array_map() Methode (PHP >=5.3):
Dies Mit der Methode können Sie mehrere Arrays und eine Rückruffunktion übergeben, um deren Elemente zu verarbeiten.
array_map(function($v1, $v2){ echo $v1 . '<br>'; echo $v2 . '<br>'; }, $data1, $data2);
MultipleIterator-Methode (PHP >=5.3):
Diese Methode erstellt ein Objekt mit mehreren Iteratoren, das zum Durchlaufen mehrerer Arrays verwendet werden kann gleichzeitig.
$it = new MultipleIterator(); $it->attachIterator(new ArrayIterator($data1)); $it->attachIterator(new ArrayIterator($data2)); foreach ($it as $a) { echo $a[0] . '<br>'; echo $a[1] . '<br>'; }
for-Schleife mit Zähler (PHP >=4.3):
Diese Methode verwendet eine for-Schleife mit einem Zähler Variable, um beide zu durchlaufen Arrays.
$keysOne = array_keys($data1); $keysTwo = array_keys($data2); $min = min(count($data1), count($data2)); for ($i = 0; $i < $min; $i++) { echo $data1[$keysOne[$i]] . '<br>'; echo $data2[$keysTwo[$i]] . '<br>'; }
array_combine() Methode (PHP >=5.0):
Diese Methode kann verwendet werden, wenn die Arrays haben einzigartige Werte. Es kombiniert die Arrays zu einem einzigen Array, wobei die Elemente von $data1 die Schlüssel und die Elemente von $data2 die Werte sind.
foreach (array_combine($data1, $data2) as $d1 => $d2) { echo $d1 . '<br>'; echo $d2 . '<br>'; }
call_user_func_array() Methode ( PHP >=5.6):
Mit dieser Methode können Sie mehrere Arrays an einen Rückruf übergeben Funktion.
$func = function (...$numbers) { foreach ($numbers as $v) echo $v . '<br>'; echo '<br>'; }; call_user_func_array("array_map", [$func, $data1, $data2]);
Das obige ist der detaillierte Inhalt vonWie kann man in PHP effizient mehrere Arrays gleichzeitig durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!