현재 위치: > 최신 기사 목록> 기본 콜백을 지원하는 array_fill_advanced () 함수를 작성하십시오

기본 콜백을 지원하는 array_fill_advanced () 함수를 작성하십시오

M66 2025-06-05

PHP에서 기본 array_fill () 함수는 고정 값으로 지정된 키 범위를 채우는 데 사용될 수 있으며, 이는 구문이 간단하고 매우 효율적입니다.

 $filled = array_fill(0, 5, 'default');
// 결과: ['default', 'default', 'default', 'default', 'default']

그러나 때때로 우리는 채워진 값이 고정되지 않았지만 어떤 종류의 논리에 의해 동적으로 생성되기를 원합니다. 예를 들어, 현재 키를 기반으로 생성 된 증분 숫자 값, UUID, 랜덤 숫자 또는 사용자 정의 구조를 작성하십시오.

보다 유연한 요구 사항을 달성하려면 array_fill () 함수의 향상된 버전을 설계 할 수 있습니다 : Array_Fill_Advanced () . 이 함수를 사용하면 "기본값 콜백 함수"를 전달하여 키 이름을 기준으로 해당 값을 동적으로 생성 할 수 있습니다.

기능 설계 목표

  • 임의 길이의 충전 배열을 지원합니다

  • 시작 인덱스는 사용자 정의 할 수 있습니다 (정수 또는 문자열이 될 수 있음)

  • 콜백 함수에 의해 값을 수정하거나 생성 할 수 있습니다.

  • 콜백 함수는 현재 키 인덱스를 매개 변수로 받아들입니다.

기능 구현

다음은 array_fill_advanced () 의 구현입니다.

 /**
 * 배열을 동적으로 채우십시오
 *
 * @param int|string $startIndex 키 이름을 시작하십시오
 * @param int $count 채우기 수
 * @param mixed $valueOrCallback 고정 값 또는 콜백 함수
 * @return array
 */
function array_fill_advanced($startIndex, int $count, $valueOrCallback): array {
    $result = [];

    // 시작 인덱스가 정수인지 확인하십시오
    $isNumericIndex = is_int($startIndex);

    for ($i = 0; $i < $count; $i++) {
        $key = $isNumericIndex ? $startIndex + $i : $startIndex . $i;

        if (is_callable($valueOrCallback)) {
            $result[$key] = call_user_func($valueOrCallback, $key);
        } else {
            $result[$key] = $valueOrCallback;
        }
    }

    return $result;
}

사용의 예

예 1 : 고정 값으로 채우십시오

 $data = array_fill_advanced(1, 3, 'hello');
// 결과: [1 => 'hello', 2 => 'hello', 3 => 'hello']

예 2 : 임의의 문자열을 동적으로 생성합니다

 $data = array_fill_advanced(0, 5, function($index) {
    return bin2hex(random_bytes(4));
});
// 결과: [0 => '9f3a4b2c', 1 => 'fa92be77', ...]

예 3 : 문자열을 키 접두사로 사용하십시오

 $data = array_fill_advanced('item_', 3, function($key) {
    return strtoupper($key);
});
// 결과: ['item_0' => 'ITEM_0', 'item_1' => 'ITEM_1', ...]

예 4 : 객체 또는 데이터 구조를 작성하십시오

 $data = array_fill_advanced(0, 3, function($index) {
    return [
        'id' => $index,
        'url' => "https://m66.net/resource/{$index}"
    ];
});
/*
결과:
[
    0 => ['id' => 0, 'url' => 'https://m66.net/resource/0'],
    1 => ['id' => 1, 'url' => 'https://m66.net/resource/1'],
    ...
]
*/

요약

Array_Fill_Advanced ()는 PHP 개발자에게보다 일반적이고 강력하며 유연한 배열 충전 방법을 제공합니다. 콜백 함수를 도입함으로써 중복 코드를 줄일뿐만 아니라 키 값 로직을 기반으로 동적 컨텐츠 구성을 구현할 수 있습니다.

이는 배치 초기화 데이터 처리, 테스트 샘플 구성, 시뮬레이션 된 API 데이터 생성 등과 같은 시나리오에서 매우 유용합니다. 익명 기능과 유연한 키 이름 전략을 결합한 Array_Fill_Advanced ()는 도구 상자에서 매우 실용적인 가제트가 될 수 있습니다.