首頁  >  文章  >  後端開發  >  如何使用「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