개발.이산이다

array_intersect_key

이산이다 2025. 12. 20. 01:26

1. PHP array_intersect_key 함수 설명

array_intersect_key() 함수는 배열들의 키(key) 를 기준으로 교집합을 구하는 함수입니다.
즉, 첫 번째 배열의 키 중에서 다른 배열에도 존재하는 키만 남겨서 반환 합니다.
값(value)은 비교하지 않고, 오로지 키만 비교합니다.

✔ 기본 형태

 
array_intersect_key(array $array1, array ...$arrays): array

✔ 특징

  • 키가 동일한 요소만 반환
  • 키 비교는 기본적으로 엄격 비교(===) 형태
  • 여러 배열을 전달할 수 있음

2. PHP array_intersect_key 샘플 코드

 
<?php
$a = [
    "id" => 1,
    "name" => "Alice",
    "age" => 25
];

$b = [
    "name" => "Bob",
    "age" => 30,
    "country" => "Korea"
];

$result = array_intersect_key($a, $b);

print_r($result);

3. 샘플코드 이용 방법 및 Output 설명

✔ 동작 설명

  • $a 와 $b 에 공통으로 존재하는 키는 "name" 과 "age"
  • 따라서 $a 의 "name" 과 "age" 값만 결과로 반환됨

✔ Output

 
Array ( [name] => Alice [age] => 25 )


4. VB.NET에서 유사 기능 함수 생성 및 설명

VB.NET에는 PHP의 array_intersect_key 와 동일한 내장 함수는 없습니다.
대신 Dictionary(Of TKey, TValue) 와 LINQ를 이용해 키 기반 교집합을 구현할 수 있습니다.


✔ VB.NET 함수 (커스텀)

1) 설명

두 Dictionary의 공통 키를 기준으로 첫 번째 Dictionary의 값을 반환하는 기능.


2) 샘플 코드

 
Function IntersectKeys(Of TKey, TValue)(dict1 As Dictionary(Of TKey, TValue),
                                       dict2 As Dictionary(Of TKey, TValue)) As Dictionary(Of TKey, TValue)

    Return dict1.Where(Function(kv) dict2.ContainsKey(kv.Key)).
                 ToDictionary(Function(kv) kv.Key, Function(kv) kv.Value)

End Function

' 사용 예시
Dim a As New Dictionary(Of String, Object) From {
    {"id", 1},
    {"name", "Alice"},
    {"age", 25}
}

Dim b As New Dictionary(Of String, Object) From {
    {"name", "Bob"},
    {"age", 30},
    {"country", "Korea"}
}

Dim result = IntersectKeys(a, b)

For Each kv In result
    Console.WriteLine($"{kv.Key} : {kv.Value}")
Next

3) Output

 
name : Alice age : 25


5. C#에서 유사 기능 함수 생성 및 설명

C#에서도 동일한 방식으로 LINQ를 활용해 구현할 수 있습니다.


✔ C# 커스텀 함수

1) 설명

두 Dictionary의 공통 키만 가져와 첫 번째 Dictionary 기준으로 반환.


2) 샘플 코드

 
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static Dictionary<TKey, TValue> IntersectKeys<TKey, TValue>(
        Dictionary<TKey, TValue> dict1,
        Dictionary<TKey, TValue> dict2)
    {
        return dict1
            .Where(kv => dict2.ContainsKey(kv.Key))
            .ToDictionary(kv => kv.Key, kv => kv.Value);
    }

    static void Main()
    {
        var a = new Dictionary<string, object>
        {
            {"id", 1},
            {"name", "Alice"},
            {"age", 25}
        };

        var b = new Dictionary<string, object>
        {
            {"name", "Bob"},
            {"age", 30},
            {"country", "Korea"}
        };

        var result = IntersectKeys(a, b);

        foreach (var kv in result)
        {
            Console.WriteLine($"{kv.Key} : {kv.Value}");
        }
    }
}

3) Output

 
name : Alice age : 25


6. Python에서 유사 기능 함수

Python의 dict에서도 키 기반 교집합을 손쉽게 구현할 수 있습니다.


✔ Python 함수

1) 설명

두 dict의 공통 키를 기준으로 첫 번째 dict의 요소를 반환.


2) 샘플 코드

 
def intersect_keys(dict1, dict2):
    return {k: dict1[k] for k in dict1 if k in dict2}

a = {
    "id": 1,
    "name": "Alice",
    "age": 25
}

b = {
    "name": "Bob",
    "age": 30,
    "country": "Korea"
}

result = intersect_keys(a, b)

print(result)

3) Output

 
{'name': 'Alice', 'age': 25}


7. JavaScript에서 유사 기능 함수

JavaScript에서는 객체(Object)를 사용하여 비슷한 방식으로 구현할 수 있습니다.


✔ JavaScript 함수

1) 설명

두 객체의 공통 키만 선택해 첫 번째 객체 기준으로 반환.


2) 샘플 코드

 
function intersectKeys(obj1, obj2) {
    let result = {};
    for (let key in obj1) {
        if (obj2.hasOwnProperty(key)) {
            result[key] = obj1[key];
        }
    }
    return result;
}

const a = {
    id: 1,
    name: "Alice",
    age: 25
};

const b = {
    name: "Bob",
    age: 30,
    country: "Korea"
};

const result = intersectKeys(a, b);
console.log(result);

3) Output

 
{ name: 'Alice', age: 25 }

'개발.이산이다' 카테고리의 다른 글

array_intersect_uassoc  (0) 2025.12.19
array_intersect_ukey  (0) 2025.12.18
array_udiff  (0) 2025.12.17
array_intersect  (0) 2025.12.16
array_diff  (0) 2025.12.15