Maison  >  Article  >  développement back-end  >  Implémentation personnalisée PHP de l'intersection de tableaux

Implémentation personnalisée PHP de l'intersection de tableaux

WBOY
WBOYoriginal
2023-05-23 10:32:36482parcourir

Dans le développement PHP, l'intersection de tableaux est une opération courante. Cependant, la fonction d'intersection de tableaux fournie par PHP ne peut gérer que le cas de deux tableaux. Lorsque nous devons traiter l'intersection de plusieurs tableaux, nous devons personnaliser l'opération d'intersection.

Cet article expliquera comment personnaliser l'intersection des tableaux PHP et fournira le code d'implémentation.

  1. Description du problème

Nous devons traiter l'intersection de plusieurs tableaux. Par exemple, il y a les quatre tableaux suivants :

$arr1 = array(1, 2, 3);
$arr2 = array(2, 3, 4);
$arr3 = array(3, 4, 5);
$arr4 = array(4, 5, 6);

Nous devons maintenant résoudre l'intersection de ces quatre tableaux.

  1. Solution

Nous pouvons implémenter l'intersection de tableaux en suivant les étapes suivantes :

2.1 Stockez les éléments de tous les tableaux dans un nouveau tableau, puis effectuez une opération de déduplication sur le nouveau tableau.

2.2 Comptez le nombre de fois où chaque élément apparaît dans le tableau d'origine. Si le nombre est égal au nombre de tableaux d'origine, cela signifie que l'élément est apparu dans tous les tableaux d'origine et ajoutez-le au tableau résultat.

Ce qui suit est le code d'implémentation spécifique :

function array_intersect_multi() {
  $arrays = func_get_args();
  $counts = array_count_values(call_user_func_array('array_merge', $arrays));
  $intersected_array = array();
  $arrays_count = count($arrays);
  
  foreach ($counts as $value => $count) {
    if ($count === $arrays_count) {
      $intersected_array[] = $value;
    }
  }

  return $intersected_array;
}
  1. Description de la fonction

La fonction array_intersect_multi() dans le code ci-dessus peut implémenter l'opération d'intersection de plusieurs tableaux. array_intersect_multi() 可以实现多个数组的交集操作。

该函数有一个入参,即数组集合,数组集合是一个由多个数组组成的数组。

该函数会将数组集合中所有数组的元素添加到新数组中,并对新数组进行去重操作。

然后,该函数会统计每个元素在原数组中出现的次数,如果次数等于原数组的个数,说明该元素在所有原数组中都出现过,将其加入结果数组中。

最终,函数会返回数组交集结果。

  1. 示例

我们可以使用上述函数来求解四个数组的交集,示例如下:

$arr1 = array(1, 2, 3);
$arr2 = array(2, 3, 4);
$arr3 = array(3, 4, 5);
$arr4 = array(4, 5, 6);

$intersected_array = array_intersect_multi($arr1, $arr2, $arr3, $arr4);
print_r($intersected_array);

输出结果为:

Array
(
    [0] => 4
)

可以看到,四个数组的交集为 4

Cette fonction a un paramètre d'entrée, qui est une collection de tableaux. Une collection de tableaux est un tableau composé de plusieurs tableaux.
  1. Cette fonction ajoutera les éléments de tous les tableaux de la collection de tableaux au nouveau tableau et effectuera une opération de déduplication sur le nouveau tableau.
Ensuite, la fonction comptera le nombre de fois où chaque élément apparaît dans le tableau d'origine. Si le nombre est égal au nombre de tableaux d'origine, cela signifie que l'élément est apparu dans tous les tableaux d'origine et il sera ajouté à. le tableau de résultats.

Enfin, la fonction renverra le résultat de l'intersection du tableau. 🎜
    🎜Exemple🎜🎜🎜Nous pouvons utiliser la fonction ci-dessus pour résoudre l'intersection de quatre tableaux. L'exemple est le suivant : 🎜rrreee🎜Le résultat de sortie est : 🎜rrreee🎜Comme vous pouvez le voir, l'intersection de quatre tableaux est 4. 🎜🎜🎜Résumé🎜🎜🎜En personnalisant l'opération d'intersection de tableaux, nous pouvons facilement gérer l'intersection de plusieurs tableaux. Cet article présente les étapes et le code pour implémenter l'intersection de tableaux. J'espère qu'il sera utile à tout le monde. 🎜

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!

Déclaration:
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