PHP에서 array_fill ()은 사전 설정 크기와 내용의 배열을 빠르게 생성 할 수있는 매우 실용적인 기능입니다. 그러나 이상한 사용법이 있는데, 이는 널을 패딩 값으로 사용하여 배열을 초기화하는 것입니다. 이것이 실질적인 의미입니까? 개발에 사용해야합니까? 함께 토론합시다.
먼저 Array_Fill () 의 기본 구문을 살펴 보겠습니다.
array_fill(int $start_index, int $count, mixed $value): array
이 함수는 지정된 $ start_index 에서 시작하여 $ count 요소를 생성하고 각 요소의 값은 $ 값 입니다. 예를 들어:
$filled = array_fill(0, 5, null);
print_r($filled);
산출:
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
)
이 예에서는 5 개의 널 값이 포함 된 배열을 얻습니다.
표면적으로 널 값을 채우는 것은 의미가없는 것처럼 보이지만 실제로는 일부 시나리오에서 매우 유용합니다.
때때로 우리는 먼저 배열을 "점유"하고 나중에 논리에 따라 특정 값을 채우고 싶어합니다. 예를 들어:
$results = array_fill(0, 10, null);
foreach ($data as $item) {
$index = $item['position'];
$results[$index] = $item['value'];
}
이 경우 $ result는 처음부터 고정 된 길이를 보장하고 각 위치는 기본적으로 널 입니다. 이는 정의되지 않은 인덱스에 액세스하여 발생하는 오류 또는 경고를 피합니다.
테이블, 차트 또는 페이징 시스템과 같은 일부 프론트 엔드 페이지에서 일부 위치에 값이 없더라도 모든 데이터 구조가 완료되기를 원합니다. 이렇게하면 반환 된 JSON 구조가 더 규칙적입니다. 예를 들어:
$data = array_fill(1, 12, null); // 1 달이 여기에 있습니다 12 달의 기본값
// 만 있다고 가정합니다 2 달、3 달和 7 달的数据
$data[2] = 150;
$data[3] = 180;
$data[7] = 90;
echo json_encode($data);
산출:
{
"1": null,
"2": 150,
"3": 180,
"4": null,
"5": null,
"6": null,
"7": 90,
"8": null,
"9": null,
"10": null,
"11": null,
"12": null
}
이 구조는 프론트 엔드 처리 중에 판단 논리 및 경계 상황의 처리를 줄일 수 있습니다.
Array_fill ()을 사용하면 코드가 "N 요소 배열이 필요합니다. 각 요소는 처리하기 전에 위치를 차지합니다"라는 의도를 표현할 수 있습니다. 이 방법은 널 또는 빈 줄을 채우기 위해 수동으로 루프를 작성하는 것보다 직관적이고 효율적입니다.
// 전통적인 글
for ($i = 0; $i < 10; $i++) {
$arr[$i] = null;
}
// 권장 글쓰기
$arr = array_fill(0, 10, null);
실제 프로젝트에서는이 접근법의 몇 가지 예가 다음과 같습니다.
데이터보고 시스템에서 월/분기/카테고리를 초기화하는 데 사용되는 데이터 프레임 워크;
분산 작업을 처리 할 때 사전 배치 된 결과 자리 표시 자 배열;
사용자 입력과의 후속 병합을 용이하게하기 위해 기본 구성 구조를 생성하는 데 사용됩니다.
템플릿을 렌더링하기 전에 데이터 자리 표시자를 초기화하여 템플릿이 오류를보고하지 않도록합니다.
예를 들어 M66.net 에서 차트 분석 시스템을 구축하고 사용자는 특정 제품의 월별 판매 데이터를 요청합니다. 특정 달에 판매가 없더라도 여전히 반환 된 데이터 구조가 완료되기를 희망합니다. 현재 Array_Fill ()을 사용하여 사전 설정을 완료 할 수 있습니다.
$monthlySales = array_fill(1, 12, null);
// 데이터베이스를 쿼리하고 채우십시오
foreach ($dbResults as $row) {
$monthlySales[$row['month']] = $row['sales'];
}
모든 프로젝트가 array_fill ()을 사용하여 NULL 값을 채우는 것은 아니지만 데이터 정렬, 사전 설정 구조, 서식 및 결과 자리 표시와 같은 요구 사항에 직면 할 때 좋은 도구입니다.
핵심은 "사용 여부"가 아니라 "사용하고 싶은 이유를 알고 있는지 여부"입니다. 개발 의도를 명확하게 표현하고 코드의 가독성과 견고성을 개선하는 한 필요합니다.