현재 위치: > 최신 기사 목록> array_combine ()에서 키 이름을 덮어 쓰는 문제를 피하는 방법?

array_combine ()에서 키 이름을 덮어 쓰는 문제를 피하는 방법?

M66 2025-05-13

PHP에서 array_combine () 함수는 두 배열을 연관 배열로 결합하는 데 사용됩니다. 그 중 하나는 키 이름을 제공하고 다른 하나는 해당 값을 제공합니다. 이것은 간단하고 간단한 기능인 것처럼 보이지만 경우에 따라 array_combine ()을 사용하면 키 이름을 덮어 쓰는 데 문제가 발생할 수 있습니다. 이 문제는 일반적으로 기조 이름 배열에 복제가 존재할 때 발생합니다.

array_combine () 의 기본 사용

먼저 Array_combine () 의 기본 사용 예를 살펴 보겠습니다.

 <?php
$keys = ['a', 'b', 'c'];
$values = [1, 2, 3];

$result = array_combine($keys, $values);
print_r($result);
?>

출력 결과 :

 Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)

위 코드에서 볼 수 있듯이 Array_combine ()은 제대로 작동합니다. 키 이름 배열 $ 키 와 값 배열 $ 값을 결합하여 새 연관 배열을 반환합니다.

주요 이름을 덮어 쓰는 위험

$ 키 어레이에 중복 키 이름이 포함 된 경우 Array_combine ()은 이전 키 값 쌍을 덮어 씁니다. 예를 살펴 보겠습니다.

 <?php
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];

$result = array_combine($keys, $values);
print_r($result);
?>

출력 결과 :

 Array
(
    [a] => 1
    [b] => 3
)

이 예에서 'B' 키 이름이 반복적으로 나타나서 최종 결과가 'b'=> 3 만 보존하고 원래 'b'=> 2가 덮어 씁니다.

주요 이름을 덮어 쓰는 것을 피하는 방법은 무엇입니까?

이런 종류의 키 이름을 재정의하지 않으려면 다음 방법을 사용할 수 있습니다.

1. 키 이름이 복제되었는지 확인하십시오

Array_combine ()을 사용하기 전에 array_count_values ​​()를 사용하여 키 이름 배열에 중복이 있는지 확인할 수 있습니다. 중복이있는 경우 먼저 중복 키 이름 (예 : 접미사 추가 등)을 처리 할 수 ​​있습니다.

 <?php
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];

// 키 이름 배열에 중복이 있는지 확인하십시오.
$keys_count = array_count_values($keys);
foreach ($keys_count as $key => $count) {
    if ($count > 1) {
        // 키 이름을 복제하기 위해 접미사를 추가하십시오
        $keys = array_map(function($item) use ($key) {
            return $item === $key ? $key . '_dup' : $item;
        }, $keys);
    }
}

$result = array_combine($keys, $values);
print_r($result);
?>

출력 결과 :

 Array
(
    [a] => 1
    [b_dup] => 2
    [b] => 3
)

이런 식으로, 우리는 키 이름을 덮어 쓰는 문제를 피하고 _dup 접미사와 함께 중복 키 이름이 추가됩니다.

2. Array_Merge ()를 사용하여 어레이를 병합하십시오

또 다른 방법은 병합 전에 처리하기 위해 Array_Merge ()를 사용하는 것입니다. 병합시 중복 키 이름을 처리 할 수 ​​있습니다. 예를 들어, 무작위 번호 또는 고유 식별자를 키 이름에 추가하여 덮어 쓰기를 피할 수 있습니다.

 <?php
$keys = ['a', 'b', 'b'];
$values = [1, 2, 3];

$keys = array_map(function($key) {
    return $key . uniqid('_'); // 키 이름을 복제하기 위해 고유 식별자를 추가하십시오
}, $keys);

$result = array_combine($keys, $values);
print_r($result);
?>

출력 결과 :

 Array
(
    [a] => 1
    [b_6434e34d27e85] => 2
    [b_6434e34d27e86] => 3
)

이런 식으로, 우리는 키 이름을 무시하는 것을 피하고 각 중복 키 이름에는 고유 식별자가 제공됩니다.

요약

Array_combine ()을 사용하는 경우 키 이름이 중복되면 덮어 쓰기 문제가 발생할 수 있습니다. 이 문제를 피하기 위해 우리는 다음을 수행 할 수 있습니다.

  1. 키 이름 배열에 중복이 있는지 확인하십시오. 중복이있는 경우, 덮어 쓰기를 피하기 위해 키 이름을 수정할 수 있습니다.

  2. Array_Merge ()를 사용하여 배열을 병합하고 고유 식별자 추가와 같은 중복 키 이름을 처리하십시오.

이러한 방법을 통해 array_combine () 함수를 사용하면 키 이름이 덮어 쓰는 문제가 발생하지 않도록 할 수 있습니다.