Maison > développement back-end > tutoriel php > Comment puis-je fusionner efficacement deux tableaux indexés plats en alternance ?

Comment puis-je fusionner efficacement deux tableaux indexés plats en alternance ?

DDD
Libérer: 2024-12-03 10:40:10
original
690 Les gens l'ont consulté

How Can I Efficiently Merge Two Flat Indexed Arrays Alternately?

Fusionner alternativement des tableaux à index plat

Fusionner deux tableaux de manière alternée, en poussant les valeurs dans le résultat une par une plutôt que de les concaténer, est une exigence courante dans le traitement et la manipulation des données. Dans ce cas, nous avons deux tableaux indexés plats, $a1 et $a2, et nous souhaitons les fusionner dans un nouveau tableau, $newArray, de telle sorte que les valeurs soient entrelacées comme suit : [0, 3, 1, 4, 2 , 5].

Bien qu'il soit possible d'y parvenir en utilisant une boucle manuelle comme suggéré, il existe une approche native plus efficace qui offre des avantages en termes de performances. Le code suivant présente l'approche précalculée :

$count = count($a1);
for ($i = 0; $i < $count; $i++) {
    $newArray[] = $a1[$i];
    $newArray[] = $a2[$i];
}
Copier après la connexion

Dans ce code, nous déterminons d'abord le nombre d'éléments dans $a1 (en supposant que $a1 et $a2 ont la même taille). Ensuite, nous utilisons une boucle pour parcourir les éléments et les ajouter alternativement au $newArray.

L'analyse comparative des performances, comme indiqué ci-dessous, confirme l'efficacité de cette approche :

$a1 = array(0, 1, 2);
$a2 = array(3, 4, 5);

$start = microtime(TRUE);

for($t = 0; $t < 100000; $t++){
    $newArray = array();
    $count = count($a1);
    for ($i = 0; $i < $count; $i++){
        $newArray[] = $a1[$i];
        $newArray[] = $a2[$i];
    }
}
echo round(microtime(TRUE) - $start, 2); # 0.6
Copier après la connexion

Comparé à l'approche qui compte la taille du tableau à chaque itération, cette approche précalculée offre des performances substantielles amélioration :

$a1 = array(0, 1, 2);
$a2 = array(3, 4, 5);

$start = microtime(TRUE);

for($t = 0; $t < 100000; $t++){
    $newArray = array();
    for ($i = 0; $i < count($a1); $i++){
        $newArray[] = $a1[$i];
        $newArray[] = $a2[$i];
    }
}
echo round(microtime(TRUE) - $start, 2); # 0.85
Copier après la connexion

Bien que l'analyse comparative fournisse un aperçu des performances, il est important de noter que les caractéristiques de performances spécifiques peuvent varier en fonction des données et de l'environnement spécifiques. Néanmoins, cette approche précalculée offre une base solide pour fusionner efficacement des tableaux indexés plats de manière alternée.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal