사용자가 제공 한 키 목록을 기반으로 후속 용도로 기본 값 배열을 생성 할 것으로 예상되는 함수를 작성한다고 가정합니다.
function initDefaults(array $keys, $defaultValue) {
return array_fill_keys($keys, $defaultValue);
}
$ 키가 비어 있으면 함수는 빈 배열을 반환합니다. 코드의 후속 논리가 빈 배열을 구체적으로 처리하지 않으면 다음 문제가 발생할 수 있습니다.
Traversal 실패 : 루프 본체가 실행되지 않아 비즈니스 논리에 영향을 미칩니다.
데이터 누락 : 예상 기본 키 값 쌍이 생성되지 않습니다.
프로그램 예외 : 예를 들어, 배열 요소에 액세스 할 때 정의되지 않은 인덱스 오류가 발생했습니다.
array_fill_keys를 호출하기 전에 먼저 키 어레이가 비어 있는지 확인하십시오.
$keys = getKeysFromUser(); // 빈 배열을 반환 할 수 있습니다
if (empty($keys)) {
// 비즈니스 요구에 따라,처리 계획을 선택하십시오:
// 1) 기본 키 배열을 반환합니다
// 2) 예외 프롬프트를 던지십시오
// 3) 빈 배열을 직접 반환하고 후속 처리 로직에서 호환됩니다.
$keys = ['defaultKey']; // 여기에서 기본 키를 사용하십시오
}
$array = array_fill_keys($keys, 0);
이 방법은 $ 배열 에 적어도 하나의 요소가 포함되며 후속 액세스 중에 오류를 피할 수 있습니다.
비즈니스가 허용되면 고정 된 기본 키 세트를 대안으로 정의 할 수 있습니다.
function safeFillKeys(array $keys, $defaultValue, array $defaultKeys = ['default']) {
if (empty($keys)) {
$keys = $defaultKeys;
}
return array_fill_keys($keys, $defaultValue);
}
전화시 :
$result = safeFillKeys([], 0, ['key1', 'key2']);
print_r($result);
이런 식으로 빈 배열이 전달 되더라도 합리적인 기본 구조를 반환 할 수 있습니다.
전달 된 키를 키 어레이와 기본 키 어레이를 결합하면 최종 배열이 비어 있지 않도록합니다.
$keys = array_unique(array_merge($keys, ['fallbackKey']));
$array = array_fill_keys($keys, null);
Array_unique는 키가 반복되지 않음을 보장하고, array_merge는 기본 키를 추가합니다. 이것은 빈 배열 상황을 피합니다.
array_fill_keys 의 통화 타이밍을 제어 할 수없는 경우 결과를 사용할 때 판단을 추가 할 수 있습니다.
$array = array_fill_keys($keys, 0);
if (empty($array)) {
// 특별 대우,예를 들어, 기본값을 초기화하십시오
$array = ['default' => 0];
}
// 후속 처리 처리를 계속하십시오
Array_Fill_Keys 는 간결하고 효율적인 기능이지만 입력 키 어레이가 비어 있으면 빈 배열을 반환하는 동작이 프로그램에 숨겨진 위험을 초래할 수 있습니다. 합리적인 예방 조치에는 다음이 포함됩니다.
입력 배열이 비어 있는지 확인하십시오.
기본 키 값 세트를 설정하십시오.
전달 된 키 어레이를 기본 키 어레이와 병합하십시오.
비즈니스 로직에서 빈 배열 상황과 호환됩니다.
이를 통해 프로그램의 견고성과 안정성을 보장하고 빈 배열로 인한 논리적 취약성 또는 오류를 피할 수 있습니다.
// 코드 예제:안전한 사용 array_fill_keys
function safeArrayFillKeys(array $keys, $value, array $defaultKeys = ['default']) {
if (empty($keys)) {
$keys = $defaultKeys;
}
return array_fill_keys($keys, $value);
}
$keys = []; // 아마 비어있을 것입니다
$result = safeArrayFillKeys($keys, 0);
print_r($result);