<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie du code n'a rien à voir avec le contenu de l'article,Comme exemple de l'en-tête uniquement</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Bienvenue à lire cet article!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>Comment utiliser efficacement sous un grand volume de données <code>array_uintersect
L'idée d'optimisation est d'extraire d'abord les champs clés, d'établir un indice de hachage, puis de porter des jugements d'intersection en fonction de l'indice:
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">extractKeys</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">array</span></span></span><span> </span><span><span class="hljs-variable">$arr</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$keyField</span></span><span>): </span><span><span class="hljs-title">array</span></span><span> {
</span><span><span class="hljs-variable">$keys</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$arr</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">$keys</span></span><span>[</span><span><span class="hljs-variable">$item</span></span><span>[</span><span><span class="hljs-variable">$keyField</span></span><span>]] = </span><span><span class="hljs-literal">true</span></span><span>;
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$keys</span></span><span>;
}
</span><span><span class="hljs-variable">$keys1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">extractKeys</span></span><span>(</span><span><span class="hljs-variable">$arr1</span></span><span>, </span><span><span class="hljs-string">'key'</span></span><span>);
</span><span><span class="hljs-variable">$keys2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">extractKeys</span></span><span>(</span><span><span class="hljs-variable">$arr2</span></span><span>, </span><span><span class="hljs-string">'key'</span></span><span>);
</span><span><span class="hljs-variable">$commonKeys</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$keys1</span></span><span>, </span><span><span class="hljs-variable">$keys2</span></span><span>);
</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">$arr1</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-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$commonKeys</span></span><span>[</span><span><span class="hljs-variable">$item</span></span><span>[</span><span><span class="hljs-string">'key'</span></span><span>]])) {
</span><span><span class="hljs-variable">$result</span></span><span>[] = </span><span><span class="hljs-variable">$item</span></span><span>;
}
}
Les avantages de cela sont:
L'utilisation directe de Array_uIntersect dans un grand environnement de données peut conduire à des goulots d'étranglement de performances. Grâce à des stratégies d'optimisation telles que la cartographie de hachage à l'avance, la réduction des appels de rappel et le traitement du groupe, l'efficacité de l'exécution peut être considérablement améliorée. Dans les projets réels, ajustez de manière flexible la structure de données spécifique et les scénarios d'utilisation doivent être combinés pour obtenir les meilleures performances.