Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann man in PHP effizient mehrere Arrays gleichzeitig durchlaufen?

Wie kann man in PHP effizient mehrere Arrays gleichzeitig durchlaufen?

Patricia Arquette
Freigeben: 2024-12-03 21:44:11
Original
370 Leute haben es durchsucht

How to Efficiently Loop Through Multiple Arrays Simultaneously in PHP?

So durchlaufen Sie zwei Arrays gleichzeitig: Eine detaillierte Anleitung

Problem: Nested-Loop-Problem

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/>';
    }
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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.

Lösungen

Um mehrere Arrays gleichzeitig zu durchlaufen, können Sie verschiedene Methoden verwenden:

  1. 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);
    Nach dem Login kopieren
  2. 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>';
    }
    Nach dem Login kopieren
  3. 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>';
    }
    Nach dem Login kopieren
  4. 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>';
    }
    Nach dem Login kopieren
  5. 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]);
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage