Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man in PHP effizient mehrere Arrays gleichzeitig durchlaufen?
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!