php에서 array_fill_keys ()는 새 배열을 생성하고 지정된 키 이름을 동일한 값으로 채우는 매우 유용한 기능입니다. 이 함수의 구문은 다음과 같습니다.
array_fill_keys(array $keys, mixed $value): array
$ 키 : 키 이름을 포함하는 배열.
$ 값 : 각 키 이름에 지정된 값.
간단한 예가 있다고 가정합니다.
$keys = ['a', 'b', 'c'];
$value = 1;
$result = array_fill_keys($keys, $value);
print_r($result);
출력은 다음과 같습니다.
Array
(
[a] => 1
[b] => 1
[c] => 1
)
이 예는 간단합니다. Array_fill_Keys ()는 제공된 키 이름 A , B , C 및 지정된 값 1을 기반으로 새 배열을 만듭니다.
그러나 문제는 $ 키 어레이가 Array_Fill_Keys () 에 중복 키 이름을 포함 할 때이 중복 키 이름을 무시하고 나타나는 마지막 키 값 쌍 만 유지한다는 것입니다.
예를 들어 다음 코드를보십시오.
$keys = ['a', 'b', 'a', 'c'];
$value = 1;
$result = array_fill_keys($keys, $value);
print_r($result);
결과에 중복 키 가 포함될 것으로 예상 될 수 있지만 실제로는 다음과 같습니다.
Array
(
[a] => 1
[b] => 1
[c] => 1
)
이 예에서 키 이름 A는 array_fill_keys () 로 반복적으로 전달되지만 배열의 결과는 하나의 키 A 만 유지하고 그 값은 1 입니다. 이 동작은 배열의 주요 이름이 PHP에서 고유하기 때문에 반복 된 키 이름이 무시되므로 마지막 키 만 남습니다.
이 동작은 PHP 배열의 내부 구현으로 설명 할 수 있습니다. PHP에서 배열의 주요 이름은 독특합니다. Array_Fill_Keys ()가 새 배열을 생성하면 실제로 각 키 이름을 지정된 값으로 바인딩하고 중복 키 이름이있는 경우 키 이름의 마지막 발생 만 유지됩니다. PHP의 배열은 동일한 키 이름이 두 번 나타나지 않기 때문에 배열에서 중복 키를 피하는 것입니다.
이 문제를 피하고 array_fill_keys () 로 전달 된 $ 키 에 중복 키 이름이 없는지 확인하려면 먼저 Array_unique ()를 사용하여 중복 키 이름을 제거 할 수 있습니다.
$keys = ['a', 'b', 'a', 'c'];
$value = 1;
$uniqueKeys = array_unique($keys);
$result = array_fill_keys($uniqueKeys, $value);
print_r($result);
출력은 다음과 같습니다.
Array
(
[a] => 1
[b] => 1
[c] => 1
)
이런 식으로, 우리는 독특한 키 이름 만 새 배열을 채우는 데 사용되도록합니다.
Array_Fill_Keys () 는 매우 편리한 기능이지만 전달 된 키 이름 배열에 중복 키 이름이 포함 된 경우 중복 부분을 무시하고 나타나는 마지막 키 값 쌍 만 유지합니다. 이 동작은 PHP 배열 설계의 일부로 배열의 키 이름의 고유성을 보장합니다. 중복 키 이름 문제를 처리 해야하는 경우 Array_unique () 를 통해 중복 키를 제거하여 각 키 이름이 고유한지 확인할 수 있습니다.
이 기사가 중복 키 이름을 발견 할 때 array_fill_keys () 함수와 동작을 더 잘 이해하는 데 도움이되기를 바랍니다. 다른 질문이 있으면 언제든지 질문을 할 수 있습니다!