Position actuelle: Accueil> Derniers articles> La fonction reset () combinée avec le cas pratique de Array_Map (), vous emmènera pour comprendre le traitement du tableau PHP en profondeur

La fonction reset () combinée avec le cas pratique de Array_Map (), vous emmènera pour comprendre le traitement du tableau PHP en profondeur

gitbox 2025-07-02

En PHP, les tableaux sont l'une des structures de données les plus couramment utilisées. Lors du traitement des tableaux, nous utilisons souvent des fonctions intégrées pour simplifier les opérations, telles que array_map () et reset () . Ces deux fonctions semblent sans importance, mais en fait, elles peuvent être utilisées en combinaison dans certains scénarios pratiques pour atteindre un traitement logique efficace et concis. Cet article utilisera un cas pratique pour analyser en profondeur la façon dont ils sont utilisés ensemble pour vous aider à mieux maîtriser les compétences de traitement des tableaux PHP.

1. Fonction Introduction

1. Réinitialiser ()

reset () est une fonction qui pointe un pointeur interne vers le premier élément et renvoie la valeur de cet élément.

 <span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>];
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">reset</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>); </span><span><span class="hljs-comment">// Sortir 10</span></span><span>
</span></span>

2. Array_map ()

array_map () applique une fonction de rappel à chaque élément du tableau, renvoyant un nouveau tableau traité.

 <span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$v</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$v</span></span><span> * </span><span><span class="hljs-number">2</span></span><span>;
}, </span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-comment">// $result = [2, 4, 6]</span></span><span>
</span></span>

2. Cas pratique: extraire la première valeur dans chaque ensemble de données

Imaginez un scénario où vous avez un tableau bidimensionnel représentant une collection de champs extraits de la base de données, et vous ne vous souciez que de la première valeur dans chaque ensemble de données.

Échantillons de données

 <span><span><span class="hljs-variable">$data</span></span><span> = [
    [</span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-string">'red'</span></span><span>],
    [</span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-string">'yellow'</span></span><span>],
    [</span><span><span class="hljs-string">'grape'</span></span><span>, </span><span><span class="hljs-string">'purple'</span></span><span>],
];
</span></span>

L'objectif est d'extraire le premier élément de chaque sous-réseau, c'est-à-dire [«pomme», «banane», «raisin»] .

Pratiques traditionnelles

Habituellement, nous utilisons ForEach pour le gérer:

 <span><span><span class="hljs-variable">$result</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>) {
    </span><span><span class="hljs-variable">$result</span></span><span>[] = </span><span><span class="hljs-title function_ invoke__">reset</span></span><span>(</span><span><span class="hljs-variable">$item</span></span><span>);
}
</span></span>

Bien que possible, le code est un peu verbeux. Nous pouvons utiliser array_map () et reset () pour l'optimiser.

Elegant Practice: reset () est utilisé en combinaison avec array_map ()

 <span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'reset'</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

Résultat de sortie:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; apple
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; banana
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; grape
)
</span></span>

N'est-ce pas très concis? Ici array_map () appelle reset () sur chaque sous-réseau de données $ , renvoyant ainsi le premier élément de chaque sous-réseau.

3. Choses à noter et à une utilisation avancée

1. Questions sur les types de référence

reset () modifie en fait le pointeur interne du tableau, mais lorsqu'il est utilisé dans array_map () , chaque sous-réseau est passé par valeur, donc il n'affecte pas le tableau d'origine. C'est pourquoi cette utilisation est sûre.

2. Le sous-réseau est vide

Si un sous-réseau est vide, Reset () renvoie false . Par conséquent, un processus de filtrage peut être ajouté:

 <span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'reset'</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>), function(</span><span><span class="hljs-variable">$val</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$val</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>;
});
</span></span>

3. Logique d'extraction personnalisée

Si une logique d'extraction plus complexe est nécessaire, comme l'obtention du deuxième élément, vous pouvez combiner des fonctions anonymes:

 <span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$item</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>] ?? </span><span><span class="hljs-literal">null</span></span><span>;
}, </span><span><span class="hljs-variable">$data</span></span><span>);
</span></span>

4. Résumé

Dans ce cas, nous constatons que la combinaison intelligente de reset () et array_map () peut non seulement rendre le code plus concis et élégant, mais aussi améliorer la lisibilité et la maintenance. Cette méthode de combinaison est très adaptée au traitement de l'extraction des données à des emplacements spécifiques dans des tableaux bidimensionnels, et est une astuce que chaque développeur PHP doit maîtriser.

La maîtrise de ces combinaisons de fonctions de base et puissantes améliorera considérablement votre efficacité et votre qualité de code dans le traitement des réseaux.