PHP Array 在同一个键上合并两个数组

标签 php arrays

我正在尝试将以下两个数组合并为一个数组,共享相同的键:

第一个数组:

array(3) {
  [0]=>
   array(1) {
   ["Camera1"]=>
   string(14) "192.168.101.71"
}
[1]=>
array(1) {
  ["Camera2"]=>
  string(14) "192.168.101.72"
}
[2]=>
array(1) {
  ["Camera3"]=>
  string(14) "192.168.101.74"
}
}

第二个数组:

array(3) {
 [0]=>
  array(1) {
  ["Camera1"]=>
  string(2) "VT"
 }
 [1]=>
 array(1) {
   ["Camera2"]=>
   string(2) "UB"
 }
 [2]=>
 array(1) {
  ["Camera3"]=>
  string(2) "FX"
 }
}

如您所见,它们共享相同的 key (Camera1、Camera2、Camera3 等)

这是我尝试过的:

 $Testvar = array_merge($NewArrayCam,$IpAddressArray);
 foreach ($Testvar AS $Newvals){
 $cam = array();
 foreach($Newvals AS $K => $V){
 $cam[] = array($K => $V);
 }

最佳答案

理想情况下,我希望以 array_merge_recursive 简单地合并数组的方式来格式化这两个数组,而不会大惊小怪。

但是我确实想出了一个使用 array_map 的解决方案。

$array1 = array(
    array("Camera1" => "192.168.101.71"),
    array("Camera2" => "192.168.101.72"),
    array("Camera3" => "192.168.101.74"),
);

$array2 = array(
    array("Camera1" => "VT"),
    array("Camera2" => "UB"),
    array("Camera3" => "FX")
);

$results = array();

array_map(function($a, $b) use (&$results) {

    $key = current(array_keys($a));
    $a[$key] = array('ip' => $a[$key]);

    // Obtain the key again as the second array may have a different key.
    $key = current(array_keys($b));
    $b[$key] = array('name' => $b[$key]);

    $results += array_merge_recursive($a, $b);

}, $array1, $array2);

var_dump($results);

输出是:

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)

关于PHP Array 在同一个键上合并两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14842272/

相关文章:

javascript - 奇怪的 AJAX 错误 : not getting a response on AJAX call while getting a response when doing the exact call with different values

php - 为什么使用 (array) 转换数组会导致数组项无法更新?

javascript - 删除数组的 "this"索引不起作用

java - 我不断收到 ']' 预期错误 [Java]

c++ - 从 C++ 文件中读取和显示字符数组

php - PDO UTF-8 编码问题?

php echo 和 require 语法

php - 如何找到多维数组中第一个具有特定值的元素?

nginx - php-fpm下获取Nginx调用PHP文件处理404错误

php - 显示仅由特定用户在他自己的仪表板上创建的帖子