현재 위치: > 최신 기사 목록> 연관성 키 초기화를 지원하기 위해 array_fill ()을 캡슐화하는 함수를 작성하십시오.

연관성 키 초기화를 지원하기 위해 array_fill ()을 캡슐화하는 함수를 작성하십시오.

M66 2025-06-05

php에서 array_fill ()은 기본값을 가진 배열을 생성하는 매우 실용적인 기능입니다. 그러나 한 가지 제한 사항은 문자열 키 (즉, 연관 배열)를 사용하는 것이 지원되지 않는다는 것입니다. 그렇다면 지정된 키 이름으로 연관 배열을 초기화하기 위해 array_fill () -유사 메소드를 사용하려면 어떻게해야합니까?

이 기사는 관련 키 값의 배치 초기화를 지원하기 위해 사용자 정의 기능을 캡슐화하는 방법을 설명합니다.

1. array_fill () 의 기본 사용법 검토

먼저 표준 array_fill () 의 작동 방식을 살펴 보겠습니다.

 $filled = array_fill(0, 3, 'default');
print_r($filled);

출력 결과는 다음과 같습니다.

 Array
(
    [0] => default
    [1] => default
    [2] => default
)

숫자 키 만 지원하여 시작 인덱스에서 지정된 수의 요소를 채 웁니다.

2. 우리가 달성하고자하는 기능

다음과 같이 미리 정의 된 키 이름 세트가 있다고 가정합니다.

 $keys = ['username', 'email', 'age'];

'N/A' 와 같은 통합 기본값으로 한 번에 초기화하고 다음 구조를 생성하려고합니다.

 [
    'username' => 'N/A',
    'email' => 'N/A',
    'age' => 'N/A'
]

3. 사용자 정의 캡슐화 기능 : array_fill_keys_custom ()

PHP는이 목표를 달성하기 위해 array_fill_keys () 기능을 기반으로하지만 교육 목적으로보다 확장 가능한 버전을 캡슐화 할 것입니다.

 /**
 * 지정된 키 어레이 및 값을 사용하십시오,연관 배열을 초기화합니다
 *
 * @param array $keys   사용할 키 이름 배열
 * @param mixed $value  각 키의 기본값
 * @return array        초기화 된 연관 배열
 */
function array_fill_keys_custom(array $keys, $value): array {
    $result = [];

    foreach ($keys as $key) {
        $result[$key] = $value;
    }

    return $result;
}

사용의 예 :

 $fields = ['username', 'email', 'age'];
$defaultValue = 'N/A';

$initializedArray = array_fill_keys_custom($fields, $defaultValue);

print_r($initializedArray);

출력 결과 :

 Array
(
    [username] => N/A
    [email] => N/A
    [age] => N/A
)

4. 고급 : 콜백 함수를 기반으로 값 생성을 지원합니다.

또한 콜백 함수 사용과 같은 키 이름에 따라 다른 값을 동적으로 생성하기 위해이 기능을 확장 할 수 있습니다.

 function array_fill_keys_callback(array $keys, callable $callback): array {
    $result = [];

    foreach ($keys as $key) {
        $result[$key] = $callback($key);
    }

    return $result;
}

사용의 예 :

 $keys = ['token', 'session_id', 'timestamp'];

$data = array_fill_keys_callback($keys, function($key) {
    switch ($key) {
        case 'token':
            return bin2hex(random_bytes(8));
        case 'session_id':
            return uniqid('sess_', true);
        case 'timestamp':
            return date('Y-m-d H:i:s');
        default:
            return null;
    }
});

print_r($data);

출력 예제 (각 실행마다 다를 수 있음) :

 Array
(
    [token] => 9f3a8f734b23f9cd
    [session_id] => sess_6623fa3890adf3.20534250
    [timestamp] => 2025-04-20 13:52:43
)

5. 응용 프로그램 시나리오의 예

이 캡슐화는 폼 필드 초기화, API 반환 템플릿 생성 또는 기본 구성 배열 구성에 이상적입니다. 예를 들어, 나머지 API의 기본 반환을 구성 할 때 :

 $responseTemplate = array_fill_keys_custom(['code', 'message', 'data'], null);
$responseTemplate['code'] = 200;
$responseTemplate['message'] = '운영이 성공적입니다';
$responseTemplate['data'] = ['url' => 'https://m66.net/api/example'];

print_r($responseTemplate);

6. 요약

PHP는 기성품 배열 함수 (예 : Array_fill_keys () )를 제공하지만 사용자 정의 캡슐화를 통해 특히 연관 배열을 처리 할 때보다 유연한 초기화 방법을 구현할 수 있습니다.

이 방법에는 더 우아한 코드가있을뿐만 아니라 어레이 작동 로직에 대한 제어를 향상시킵니다. 특히 많은 양의 구조화 된 데이터를 동적으로 생성해야 할 때 실제 프로젝트에서 매우 유용한 가제트가 될 것입니다.