php에서 array_fill ()은 기본값을 가진 배열을 생성하는 매우 실용적인 기능입니다. 그러나 한 가지 제한 사항은 문자열 키 (즉, 연관 배열)를 사용하는 것이 지원되지 않는다는 것입니다. 그렇다면 지정된 키 이름으로 연관 배열을 초기화하기 위해 array_fill () -유사 메소드를 사용하려면 어떻게해야합니까?
이 기사는 관련 키 값의 배치 초기화를 지원하기 위해 사용자 정의 기능을 캡슐화하는 방법을 설명합니다.
먼저 표준 array_fill () 의 작동 방식을 살펴 보겠습니다.
$filled = array_fill(0, 3, 'default');
print_r($filled);
출력 결과는 다음과 같습니다.
Array
(
[0] => default
[1] => default
[2] => default
)
숫자 키 만 지원하여 시작 인덱스에서 지정된 수의 요소를 채 웁니다.
다음과 같이 미리 정의 된 키 이름 세트가 있다고 가정합니다.
$keys = ['username', 'email', 'age'];
'N/A' 와 같은 통합 기본값으로 한 번에 초기화하고 다음 구조를 생성하려고합니다.
[
'username' => 'N/A',
'email' => 'N/A',
'age' => 'N/A'
]
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
)
또한 콜백 함수 사용과 같은 키 이름에 따라 다른 값을 동적으로 생성하기 위해이 기능을 확장 할 수 있습니다.
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
)
이 캡슐화는 폼 필드 초기화, 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);
PHP는 기성품 배열 함수 (예 : Array_fill_keys () )를 제공하지만 사용자 정의 캡슐화를 통해 특히 연관 배열을 처리 할 때보다 유연한 초기화 방법을 구현할 수 있습니다.
이 방법에는 더 우아한 코드가있을뿐만 아니라 어레이 작동 로직에 대한 제어를 향상시킵니다. 특히 많은 양의 구조화 된 데이터를 동적으로 생성해야 할 때 실제 프로젝트에서 매우 유용한 가제트가 될 것입니다.