Maison  >  Article  >  développement back-end  >  Comment fusionner des tableaux PHP avec des clés partagées à l'aide de `array_map` ?

Comment fusionner des tableaux PHP avec des clés partagées à l'aide de `array_map` ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 07:21:30300parcourir

How to Merge PHP Arrays with Shared Keys Using  `array_map`?

Fusion de tableaux PHP sur la même clé : une solution utilisant array_map

En PHP, la fusion de tableaux peut être difficile lorsque les tableaux partagent des clés communes. Résolvons ce problème avec une solution qui exploite la fonction array_map.

Objectif :
Fusionner deux tableaux, $array1 et $array2, en fonction de clés partagées (par exemple, "Camera1" , "Camera2"), et assurez-vous que le résultat fusionné conserve la structure souhaitée.

Solution :
array_map offre un moyen de parcourir plusieurs tableaux simultanément, en appliquant une fonction de rappel à chacun élément. Voici comment nous pouvons l'utiliser :

<code class="php">$array1 = [
    ["Camera1" => "192.168.101.71"],
    ["Camera2" => "192.168.101.72"],
    ["Camera3" => "192.168.101.74"]
];

$array2 = [
    ["Camera1" => "VT"],
    ["Camera2" => "UB"],
    ["Camera3" => "FX"]
];

$results = [];

array_map(function($a, $b) use (&$results) {
    // Get the key for both arrays
    $key = current(array_keys($a));
    $a[$key] = ['ip' => $a[$key]];
    $key = current(array_keys($b));
    $b[$key] = ['name' => $b[$key]];
    
    $results += array_merge_recursive($a, $b);
}, $array1, $array2);</code>

Comment ça marche :

  • La fonction de rappel parcourt chaque élément de $array1 et $array2.
  • Pour chaque élément, il récupère la clé (par exemple, "Camera1") et modifie la valeur en conséquence, en ajoutant de nouvelles clés ("ip" et "name") pour garantir une structure de tableau cohérente.
  • Les éléments modifiés sont fusionnés à l'aide de array_merge_recursive et stockés dans $results.
  • Le tableau résultant combine les valeurs des deux éléments pour chaque clé partagée, en conservant la structure modifiée.

Sortie :

var_dump($results);

Produira le résultat suivant :

<code class="php">array (size=3)
  'Camera1' => 
    array (size=2)
      'ip' => string '192.168.101.71' (length=14)
      'name' => string 'VT' (length=2)
  'Camera2' => 
    array (size=2)
      'ip' => string '192.168.101.72' (length=14)
      'name' => string 'UB' (length=2)
  'Camera3' => 
    array (size=2)
      'ip' => string '192.168.101.74' (length=14)
      'name' => string 'FX' (length=2)</code>

Cette solution fusionne efficacement les deux tableaux tout en préservant les clés partagées et en garantissant la structure de tableau souhaitée.

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