현재 위치: > 최신 기사 목록> array_fill () 연관 배열 생성이 실패한 이유에 대한 분석

array_fill () 연관 배열 생성이 실패한 이유에 대한 분석

M66 2025-05-14

php에서 array_fill () 은 일반적으로 사용되는 기능으로 지정된 길이 배열을 생성하고 배열의 각 요소에 지정된 값을 할당합니다. 색인 배열을 만드는 데 좋지만 연관 배열을 만들 때 종종 실패하여 개발자가 혼란스러워집니다. 이 기사는 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 () 함수가 채우기 위해 정수 인덱스에 의존하고 연관 배열은 문자열 인덱스로 구성되기 때문입니다. Array_Fill ()을 사용하는 경우 PHP는 인덱스를 숫자로 처리하므로 연관 배열을 직접 생성하는 것은 불가능합니다.

예를 들어 다음 코드가 실패합니다.

 $array = array_fill('key1', 3, 'value');
print_r($array);

이 코드의 목적은 키 이름 'key1' 과 연관 배열을 만드는 것이지만 array_fill ()은 정수 인덱스 만 허용하기 때문에 오류가 발생합니다.

일반적인 원인 분석

  1. 인덱스 유형 오류
    Array_fill () 은 숫자 인덱스가있는 배열에만 적용됩니다. 문자열 인덱스로 배열을 채우려고하면 유형 불일치로 인해 기능이 실패합니다.

  2. 배열 요소 수 <br> Array_Fill ()을 사용하는 경우 두 번째 매개 변수 $ Num은 배열의 길이를 나타내며 양의 정수 여야합니다. 요구 사항을 충족하지 않는 숫자 (예 : 음수 또는 0 등)가 제공되면 기능 실행이 실패합니다.

이 문제를 해결하는 방법?

  1. 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
    )
    
  2. 루프를 사용하여 연관 배열을 수동으로 만듭니다

    배열을 채우기 위해 다른 로직을 사용하려면 foreach 또는 루프를 사용하여 수동으로 연관 배열을 생성 할 수 있습니다. 예를 들어:

     $keys = ['key1', 'key2', 'key3'];
    $value = 'PHP';
    $array = [];
    
    foreach ($keys as $key) {
        $array[$key] = $value;
    }
    
    print_r($array);
    

    출력은 array_fill_keys () 와 동일합니다.

  3. 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 ()를 보다 효율적으로 사용하여 실제 문제를 해결할 수 있습니다.

참조 링크 :