php에서 array_fill () 은 일반적으로 사용되는 기능으로 지정된 길이 배열을 생성하고 배열의 각 요소에 지정된 값을 할당합니다. 색인 배열을 만드는 데 좋지만 연관 배열을 만들 때 종종 실패하여 개발자가 혼란스러워집니다. 이 기사는 Array_Fill ()을 사용하여 연관 배열을 만들 때 일반적인 문제를 자세히 분석하고 솔루션을 제공합니다.
Array_Fill () 함수는 배열을 채우고 세 가지 매개 변수를 수락하는 데 사용됩니다.
array_fill(int $start_index, int $num, mixed $value): array
$ start_index : 배열의 시작 색인.
$ num : 채울 요소의 수.
$ 값 : 배열을 채우는 데 사용되는 값.
Array_fill () 은 종종 1 차원 숫자 인덱스 어레이를 생성하는 데 사용됩니다. 예를 들어:
$array = array_fill(0, 5, 'PHP');
print_r($array);
이렇게하면 인덱스 0 으로 시작하는 배열이 생성되며 각각 'PHP' 값이있는 5 개의 요소가 포함됩니다. 출력은 다음과 같습니다.
Array
(
[0] => PHP
[1] => PHP
[2] => PHP
[3] => PHP
[4] => PHP
)
인덱스 어레이를 만들 때 array_fill () 이 매우 편리하지만 직접 사용할 수는 없습니다. array_fill () 함수가 채우기 위해 정수 인덱스에 의존하고 연관 배열은 문자열 인덱스로 구성되기 때문입니다. Array_Fill ()을 사용하는 경우 PHP는 인덱스를 숫자로 처리하므로 연관 배열을 직접 생성하는 것은 불가능합니다.
예를 들어 다음 코드가 실패합니다.
$array = array_fill('key1', 3, 'value');
print_r($array);
이 코드의 목적은 키 이름 'key1' 과 연관 배열을 만드는 것이지만 array_fill ()은 정수 인덱스 만 허용하기 때문에 오류가 발생합니다.
인덱스 유형 오류
Array_fill () 은 숫자 인덱스가있는 배열에만 적용됩니다. 문자열 인덱스로 배열을 채우려고하면 유형 불일치로 인해 기능이 실패합니다.
배열 요소 수 <br> Array_Fill ()을 사용하는 경우 두 번째 매개 변수 $ Num은 배열의 길이를 나타내며 양의 정수 여야합니다. 요구 사항을 충족하지 않는 숫자 (예 : 음수 또는 0 등)가 제공되면 기능 실행이 실패합니다.
Array_Fill_Keys ()를 사용하여 연관 배열을 만듭니다
연관 배열을 만들어야하는 경우 array_fill_keys () 함수를 사용할 수 있습니다. 연관 배열의 키 이름을 지정하고 값을 지정할 수 있습니다. 예를 들어:
$keys = ['key1', 'key2', 'key3'];
$value = 'PHP';
$array = array_fill_keys($keys, $value);
print_r($array);
이 코드는 다음을 출력합니다.
Array
(
[key1] => PHP
[key2] => PHP
[key3] => PHP
)
루프를 사용하여 연관 배열을 수동으로 만듭니다
배열을 채우기 위해 다른 로직을 사용하려면 foreach 또는 루프를 사용하여 수동으로 연관 배열을 생성 할 수 있습니다. 예를 들어:
$keys = ['key1', 'key2', 'key3'];
$value = 'PHP';
$array = [];
foreach ($keys as $key) {
$array[$key] = $value;
}
print_r($array);
출력은 array_fill_keys () 와 동일합니다.
Array_Keys ()와 함께 Array_Map () 을 사용하십시오.
다른 솔루션은 Array_Map () 함수를 Array_Keys () 와 함께 사용하여 연관 배열을 생성하는 것입니다. 예를 들어:
$keys = ['key1', 'key2', 'key3'];
$value = 'PHP';
$array = array_combine($keys, array_fill(0, count($keys), $value));
print_r($array);
이 코드는 키 이름을 array_combine () 을 통해 패딩 값과 병합하여 연관 배열을 생성합니다.
Array_fill () 함수는 PHP에서 매우 유용한 도구이지만 연관 배열을 만드는 데 적합하지 않습니다. 연관 배열을 만들어야하는 경우 array_fill_keys ()를 사용하거나 수동으로 루프를 만들 수 있습니다. 그 한계를 이해함으로써 Array_fill ()를 보다 효율적으로 사용하여 실제 문제를 해결할 수 있습니다.