Maison > Article > développement back-end > Les tableaux ne se chevauchent pas dans la boucle php
Les tableaux sont un type de données puissant et important en PHP. Lorsque nous devons opérer sur un tableau en boucle, nous constatons parfois que les valeurs du tableau se superposent, ce qui peut conduire à des résultats erronés. Dans cet article, nous verrons comment éviter les problèmes de superposition de tableaux dans les boucles PHP.
Tout d’abord, comprenons le concept de base des tableaux en PHP. En PHP, un tableau est une collection ordonnée dans laquelle chaque élément possède une clé unique, qui peut être un nombre ou une chaîne. Nous pouvons définir un tableau en utilisant :
$myArray = array("apple", "banana", "orange");
Lorsque nous opérons sur un tableau dans une boucle, nous utilisons généralement une boucle for ou une boucle foreach pour parcourir les éléments du tableau. Voici un exemple d'utilisation d'une boucle for pour parcourir un tableau :
$myArray = array("apple", "banana", "orange"); for ($i = 0; $i < count($myArray); $i++) { echo $myArray[$i] . ", "; }
Le résultat de sortie est :
apple, banana, orange,
Dans le code ci-dessus, nous utilisons la fonction count() pour obtenir le nombre d'éléments dans le tableau, puis utilisez une boucle for pour parcourir chaque élément du tableau et utilisez l'instruction echo pour afficher la valeur de chaque élément.
Maintenant, disons que nous effectuons certaines opérations sur un tableau dans une boucle et constatons que le résultat est incorrect, probablement parce que les valeurs du tableau sont empilées. Par exemple, nous voulons compter le nombre de caractères de toutes les chaînes du tableau et stocker les résultats dans un autre tableau :
$myArray = array("apple", "banana", "orange"); $charCountArray = array(); for ($i = 0; $i < count($myArray); $i++) { $charCountArray[$i] = strlen($myArray[$i]); } print_r($charCountArray);
Le résultat de sortie est :
Array ( [0] => 5 [1] => 6 [2] => 6 )
Dans le code ci-dessus, nous utilisons la fonction strlen() pour obtenir chaque caractère Le nombre de caractères dans la chaîne et stocke le résultat dans le tableau $charCountArray. Cependant, nous avons constaté que les valeurs du tableau se superposaient et que la valeur du tableau augmentait après chaque boucle, ce qui entraînait un résultat final incorrect. En effet, en PHP, la méthode d'affectation des tableaux est "pass by reference", c'est-à-dire que lorsque l'on opère sur un tableau, on opère en réalité sur la référence du tableau d'origine, plutôt que sur une copie du tableau. .
Afin d'éviter ce problème, nous pouvons utiliser les deux méthodes suivantes :
Méthode 1 : Utiliser les noms de clés pour stocker les résultats
Nous pouvons utiliser les noms de clés du tableau pour stocker les résultats dans la boucle, afin qu'il ne provoquera pas la superposition de la valeur du tableau. Voici un exemple de code :
$myArray = array("apple", "banana", "orange"); $charCountArray = array(); for ($i = 0; $i < count($myArray); $i++) { $charCountArray[$i] = strlen($myArray[$i]); } print_r($charCountArray);
Le résultat de sortie est :
Array ( [0] => 5 [1] => 6 [2] => 6 )
Dans le code ci-dessus, nous utilisons le nom de clé $i du tableau pour stocker le résultat au lieu d'utiliser l'indice du tableau. De cette façon, chaque élément a un nom de clé unique et n'entraîne pas de chevauchement des valeurs du tableau.
Méthode 2 : Réinitialiser le tableau avant de boucler
Nous pouvons réinitialiser le tableau avant de boucler pour éviter le chevauchement des valeurs du tableau. Voici un exemple de code :
$myArray = array("apple", "banana", "orange"); $charCountArray = array(); // 重置数组 $charCountArray = array_pad($charCountArray, count($myArray), 0); for ($i = 0; $i < count($myArray); $i++) { $charCountArray[$i] = strlen($myArray[$i]); } print_r($charCountArray);
Le résultat de sortie est le même que celui de la première méthode :
Array ( [0] => 5 [1] => 6 [2] => 6 )
Dans le code ci-dessus, nous utilisons la fonction array_pad() pour réinitialiser le tableau. La fonction array_pad() complète le tableau à la longueur spécifiée avec la valeur spécifiée. Dans ce code, nous ne spécifions pas de valeur pour le remplissage, qui est par défaut 0, donc tous les éléments du tableau seront complétés par 0.
Résumé
Dans les boucles PHP, il existe deux façons d'éviter le problème de superposition de tableau : utiliser des noms de clés pour stocker les résultats ou réinitialiser le tableau avant de boucler. Quelle que soit la méthode que vous utilisez, vous pouvez éviter des résultats erronés dus à la superposition de tableaux. Comprendre et maîtriser ces méthodes peut nous rendre plus efficaces et plus précis dans le développement PHP.
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!