Les tableaux ne se chevauchent pas dans la boucle php

王林
Libérer: 2023-05-19 22:22:09
original
438 Les gens l'ont consulté

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

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] . ", ";
}
Copier après la connexion

Le résultat de sortie est :

apple, banana, orange, 
Copier après la connexion

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

Le résultat de sortie est :

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
Copier après la connexion
Copier après la connexion
Copier après la connexion

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

Le résultat de sortie est :

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
Copier après la connexion
Copier après la connexion
Copier après la connexion

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

Le résultat de sortie est le même que celui de la première méthode :

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
Copier après la connexion
Copier après la connexion
Copier après la connexion

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!