PHP 프로그래밍에서 Array_Fill ()은 배열을 작성하고 채우는 매우 실용적인 기능입니다. 기능 서명은 다음과 같습니다.
array array_fill(int $start_index, int $count, mixed $value)
이 기능은 지정된 시작 인덱스 위치에서 시작하고 $ count 요소가 포함 된 배열을 작성하고 동일한 $ 값 으로 채우는 것입니다. 일반적인 질문은 다음과 같습니다.이 $ 값은 값에 따라 배열에 복사됩니까, 아니면 참조별로 전달됩니까?
Array_Fill () 함수는 기본적으로 값별로 복사 로 채워집니다. 즉, 객체 또는 배열에 대한 참조를 채우는 경우 각 요소는 동일한 참조를 공유하는 여러 요소가 아닌 Array_Fill () 의 별도의 사본이됩니다.
예를 살펴 보겠습니다.
$obj = new stdClass();
$obj->name = "Alice";
$filled = array_fill(0, 3, $obj);
$filled[0]->name = "Bob";
echo $filled[1]->name; // 산출 "Bob"
array_fill () 에게 값이 전달되지만 객체는 참조 의미로 존재하므로 배열의 각 항목이 동일한 객체를 가리 킵니다. 객체 중 하나의 속성을 수정하면 다른 항목도 영향을받습니다.
그러나 정수 또는 문자열과 같은 일반적인 데이터 유형으로 채워지면 각 배열 요소는 독립 값입니다.
$filled = array_fill(0, 3, "Hello");
$filled[0] = "World";
print_r($filled);
// 산출:
// Array
// (
// [0] => World
// [1] => Hello
// [2] => Hello
// )
이 예에서 $ [0]을 수정하면 다른 요소에 영향을 미치지 않으므로 문자열이 값으로 복사되었음을 나타냅니다.
각 배열 요소가 값의 사본뿐만 아니라 동일한 변수를 참조하려면 변수를 참조하여 Array_Fill ()을 사용할 수 있습니다. 예는 다음과 같습니다.
$value = "shared";
$filled = array_fill(0, 3, &$value);
$value = "updated";
print_r($filled);
// 산출:
// Array
// (
// [0] => updated
// [1] => updated
// [2] => updated
// )
이 예에서는 & $ value를 참조로 명시 적으로 사용하면 배열의 각 요소가 동일한 변수 $ 값 에 바인딩됩니다. $ 값 으로의 변경 사항은 배열의 각 항목과 동기로 반영됩니다.
그러나이 방법은 PHP에서 일반적이지 않으며 예기치 않은 행동을 일으키기 쉽다는 점에 유의하십시오. 일반적으로 여러 배열 항목이 실제로 동일한 참조를 공유 해야하는 경우에만 권장됩니다.
array_fill ()의 기본 동작은 값별로 복사하는 것 입니다.
$ 값 이 객체 또는 배열 인 경우 복사 된 항목은 실제로 참조입니다 (객체는 항상 PHP에서 참조로 전달되기 때문에).
진정한 공유 참조를 구현하기 위해 사용 및 $ 값을 참조 할 수 있습니다.
어려운 디버깅 문제를 일으키지 않도록주의해서 참조를 사용하십시오.
array_fill () 의 충전 메커니즘에 대한 올바른 이해는 실제 프로젝트에서 잠재적 인 논리 오류를 피할 수 있습니다. 캐시 초기화, 자리 표시 자 구조 및 배치 구성과 유사한 기능 모듈을 개발하는 경우 이러한 차이를 마스터하는 것이 특히 중요합니다.
예를 들어:
$placeholders = array_fill(0, 10, "http://m66.net/placeholder");
위의 코드는 값에서 복사되어 참조를 공유하지 않는 10 개의 고정 URL 배열을 채 웁니다.
이러한 기본 메커니즘을 이해함으로써 배열의 동작을보다 정확하게 제어하고 코드의 견고성과 유지 가능성을 향상시킬 수 있습니다.