Maison >développement back-end >tutoriel php >Comment parcourir efficacement plusieurs tableaux simultanément en PHP ?

Comment parcourir efficacement plusieurs tableaux simultanément en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-03 21:44:11323parcourir

How to Efficiently Loop Through Multiple Arrays Simultaneously in PHP?

Comment parcourir deux tableaux à la fois : un guide détaillé

Problème : problème de boucle imbriquée

Lors d'une boucle sur plusieurs tableaux simultanément, un problème courant Le problème est que les résultats peuvent être incorrects en raison d'une structure de boucle inappropriée. Prenons l'exemple suivant :

$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/>';
    }
}

Le code ci-dessus utilise des boucles foreach imbriquées, qui donnent le résultat suivant :

a: 1
b: 1

a: 1
b: 2

a: 1
b: 3

a: 1
b: 4

a: 1
b: 5

Cependant, le résultat attendu est :

a: 1
b: 1

a: 2
b: 2

a: 3
b: 3

a: 4
b: 4

a: 5
b: 5

Le problème est que la structure de boucle imbriquée fait que chaque élément de $data1 est bouclé avec chaque élément de $data2. Pour obtenir le résultat souhaité, nous devons parcourir les deux tableaux simultanément.

Solutions

Pour parcourir plusieurs tableaux simultanément, vous pouvez utiliser différentes méthodes :

  1. Méthode array_map() (PHP >=5.3) :

    Ceci La méthode vous permet de transmettre plusieurs tableaux et une fonction de rappel pour traiter leurs éléments.

    array_map(function($v1, $v2){
        echo $v1 . '<br>';
        echo $v2 . '<br>';
    }, $data1, $data2);
  2. Méthode MultipleIterator (PHP >=5.3) :

    Cette méthode crée un objet itérateur multiple qui peut être utilisé pour parcourir plusieurs tableaux simultanément.

    $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>';
    }
  3. boucle for avec compteur (PHP >=4.3) :

    Cette méthode utilise une boucle for avec un compteur variable pour parcourir les deux tableaux.

    $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>';
    }
  4. Méthode array_combine() (PHP >=5.0) :

    Cette méthode peut être utilisée si les tableaux ont des valeurs uniques. Il combine les tableaux en un seul tableau où les éléments de $data1 sont les clés et les éléments de $data2 sont les valeurs.

    foreach (array_combine($data1, $data2) as $d1 => $d2) {
        echo $d1 . '<br>';
        echo $d2 . '<br>';
    }
  5. call_user_func_array() Méthode ( PHP >=5.6) :

    Cette méthode vous permet de passer plusieurs tableaux à un rappel fonction.

    $func = function (...$numbers) {
        foreach ($numbers as $v)
            echo $v . '<br>';
        echo '<br>';
    };
    call_user_func_array("array_map", [$func, $data1, $data2]);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn