>  기사  >  백엔드 개발  >  `array_map`을 사용하여 PHP 배열을 공유 키와 병합하는 방법은 무엇입니까?

`array_map`을 사용하여 PHP 배열을 공유 키와 병합하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 07:21:30377검색

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으로 문의하세요.