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
Libérer: 2024-12-03 21:44:11
original
323 Les gens l'ont consulté

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/>';
    }
}
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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);
    Copier après la connexion
  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>';
    }
    Copier après la connexion
  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>';
    }
    Copier après la connexion
  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>';
    }
    Copier après la connexion
  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]);
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal