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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-02 09:36:14112parcourir

How to Efficiently Iterate Through Multiple Arrays Simultaneously in PHP?

Bouclage simultané de deux tableaux

Problème de boucle foreach imbriquée

Lors d'une boucle sur plusieurs tableaux à l'aide de boucles foreach imbriquées, il est important d'éviter le piège de parcourir tous les éléments du deuxième tableau pour chaque élément du premier tableau. Cela conduit à des résultats incorrects.

Solutions

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

array_map() vous permet de transmettre plusieurs tableaux comme arguments et de les parcourir simultanément.

array_map(function($v1, $v2){
    echo $v1 . "<br>";
    echo $v2 . "<br><br>";
}, $data1, $data2);

2 . Méthode MultipleIterator (PHP >=5.3)

Créez un MultipleIterator et attachez des objets ArrayIterator pour chaque tableau que vous souhaitez parcourir.

$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><br>";
}

3. Boucle for avec compteur (PHP >=4.3)

Utilisez une boucle for avec une variable de compteur comme clé pour 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><br>";
}

4. Méthode array_combine() (PHP >=5.0)

Si les tableaux ont des valeurs uniques, utilisez array_combine() pour les combiner en une paire clé-valeur, où $data1 est la clé et $data2 est la valeur.

foreach(array_combine($data1, $data2) as $d1 => $d2) {
    echo $d1 . "<br>";
    echo $d2 . "<br><br>";
}

5. Méthode call_user_func_array() (PHP >=5.6)

Pour parcourir plus de deux tableaux ou un nombre inconnu de tableaux, utilisez array_map() avec call_user_func_array().

$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