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

Mary-Kate Olsen
Libérer: 2024-11-01 07:21:30
original
299 Les gens l'ont consulté

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>
Copier après la connexion

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);
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!