La fonction Array_INTERSECT_KEY est utilisée pour comparer les noms de clés de plusieurs tableaux et renvoie des éléments avec les mêmes noms de clé. Il ne compare pas les valeurs du tableau, mais correspond uniquement à la base du nom de la clé.
<span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ array1 : Le premier tableau, utilisé pour comparer avec d'autres tableaux.
$ array2 : Le deuxième tableau contenant les clés à comparer avec $ array1 .
Tableaux supplémentaires (facultatif): plusieurs tableaux peuvent être transmis pour des comparaisons multiples.
Renvoie un tableau contenant tous les éléments avec le même nom de clé que les autres tableaux.
<span><span><span class="hljs-variable">$array1</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'b'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'c'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>
];
</span><span><span class="hljs-variable">$array2</span></span><span> = [
</span><span><span class="hljs-string">'a'</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>,
</span><span><span class="hljs-string">'b'</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>,
</span><span><span class="hljs-string">'d'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</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>
Sortir:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[a] => </span><span><span class="hljs-number">1</span></span><span>
[b] => </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>
Dans cet exemple, Array_INTERSECT_KEY compare les noms de clés de $ array1 et $ array2 , renvoyant des éléments avec les mêmes noms de clés: «a» et «b» .
Semblable à array_intersect_key , array_intersect_ukey est également utilisé pour comparer en fonction des noms clés du tableau. La seule différence est qu'elle vous permet de fournir une fonction de rappel définie par l'utilisateur pour effectuer des comparaisons de noms de clés personnalisés.
<span><span><span class="hljs-title function_ invoke__">array_intersect_ukey</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$key_compare_func</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ array1 : Le premier tableau, utilisé pour comparer avec d'autres tableaux.
$ array2 : Le deuxième tableau contenant les clés à comparer avec $ array1 .
$ key_compare_func : fonction de rappel définie par l'utilisateur pour comparer les noms de clés. Cette fonction prend deux noms de clés comme paramètres et renvoie une valeur entière: si la première clé est inférieure, égale ou supérieure à la deuxième clé, il renvoie respectivement un nombre négatif, zéro ou positif.
Tableaux supplémentaires (facultatif): plusieurs tableaux peuvent être transmis pour des comparaisons multiples.
Renvoie un tableau contenant tous les éléments qui remplissent les conditions de fonction de comparaison du nom de clé défini par l'utilisateur.
<span><span><span class="hljs-variable">$array1</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'cherry'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>
];
</span><span><span class="hljs-variable">$array2</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>,
</span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>,
</span><span><span class="hljs-string">'date'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>
];
</span><span><span class="hljs-variable">$key_compare_func</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$key1</span></span></span><span>, </span><span><span class="hljs-variable">$key2</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcasecmp</span></span><span>(</span><span><span class="hljs-variable">$key1</span></span><span>, </span><span><span class="hljs-variable">$key2</span></span><span>); </span><span><span class="hljs-comment">// Ignorer le cas de comparaison</span></span><span>
};
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_ukey</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-variable">$key_compare_func</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>
Sortir:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[apple] => </span><span><span class="hljs-number">1</span></span><span>
[banana] => </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>
Dans cet exemple, Array_INTERSECT_UKEY utilise la fonction Strcasecmp pour comparer les noms de clés, ignorant le cas, de sorte que «Apple» et «Banana» sont considérés comme les mêmes touches.
caractéristiques | array_INTERSECT_KEY | array_INTERSECT_UKEY |
---|---|---|
Méthode de comparaison | Comparez directement les noms de clés | Autoriser les méthodes de comparaison des noms de clé personnalisé via des fonctions de rappel définies par l'utilisateur |
Comparaison définie par l'utilisateur | Les comparaisons définies par l'utilisateur ne sont pas prises en charge | Prise en charge des règles de comparaison personnalisées via les fonctions de rappel |
Utiliser des scénarios | Convient pour des comparaisons de noms de clé simple sans considérer les règles de comparaison de cas ou complexes | Convient aux comparaisons de noms de clé qui nécessitent des règles complexes ou personnalisées |
performance | Efficacité d'exécution simple et élevée | Étant donné que les fonctions de rappel des utilisateurs sont impliquées, les performances peuvent être légèrement inférieures à Array_INTERSECT_KEY |
Array_INTERSECT_KEY est une fonction relativement simple et efficace qui convient pour comparer les noms de clés dans plusieurs tableaux sans impliquer des comparaisons personnalisées de noms de clés.
Array_INTERSECT_UKEY permet aux développeurs de fournir des fonctions de comparaison de nom de clé personnalisées, ce qui le rend plus flexible et adapté aux scénarios où des comparaisons complexes de noms de clé sont nécessaires, mais peuvent également affecter les performances.
Selon les exigences de l'application spécifiques, vous pouvez sélectionner une fonction appropriée pour gérer la comparaison du nom de la clé. Si seule la correspondance du nom de clé direct est requise, array_intersect_key est suffisant; Si une logique de comparaison de nom de clé plus complexe est requise, Array_INTERSECT_UKEY fournit des fonctions plus puissantes.