首页  >  文章  >  后端开发  >  如何使用“array_map”将 PHP 数组与共享键合并?

如何使用“array_map”将 PHP 数组与共享键合并?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-01 07:21:30300浏览

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

PHP 同一键上的数组合并:使用 array_map 的解决方案

在 PHP 中,当数组共享公共键时,合并数组可能会很困难。让我们通过利用 array_map 函数的解决方案来解决这个问题。

目标:
基于共享键(例如“Camera1”)合并两个数组 $array1 和 $array2 ,“Camera2”),并确保合并结果保持所需的结构体。

解决方案:
array_map 提供了一种同时迭代多个数组的方法,对每个元素应用回调函数。下面是我们如何使用它:

<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>

工作原理:

  • 回调函数迭代 $array1 和 $array2 中的每个元素。
  • 对于每个元素,它检索键(例如“Camera1”)并修改相应的值,添加新键(“ip”和“name”)以确保数组结构一致。
  • 修改后的元素使用 array_merge_recursive 合并并存储在 $results 中。
  • 结果数组合并每个共享密钥的两个元素值,保留修改后的

输出:

var_dump($results);

将产生以下输出:

<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>

此解决方案有效地合并了两个数组同时保留共享密钥并确保所需的数组结构。

以上是如何使用“array_map”将 PHP 数组与共享键合并?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn