공식 PHP 문서에 따르면, array_fill () 의 $ start_index는 음수를 받아 들일 수 있습니다. 즉, 음수가 $ start_index 로 전달되면 PHP는 배열 끝에서 시작되는 위치로 취급합니다.
예를 들어 $ start_index 가 -1 인 경우 배열의 마지막 요소를 가리 킵니다. $ start_index 가 -2 인 경우 두 번째 요소 등을 가리 킵니다.
$array = array_fill(-3, 5, 'PHP');
print_r($array);
이 예에서는 음수 -3 으로 전달하여 충전물이 배열의 세 번째 마지막 위치에서 시작됨을 나타냅니다. 결과는 다음과 같습니다.
Array
(
[0] => PHP
[1] => PHP
[2] => PHP
[3] => PHP
[4] => PHP
)
시작 인덱스로 -3을 전달했지만 array_fill () 함수는 오류 또는 경고를 생성하지 않지만 배열을 성공적으로 채우며 시작 위치는 음수 인덱스에 따라 자동으로 조정됩니다. 최종 배열은 여전히 인덱스 0에서 시작하여 성공적으로 만들 수 있습니다.
$ start_index 매개 변수로 음수를 사용하는 것이 유효하지만 예상치 못한 결과 또는 이해하기 어려운 동작으로 이어질 수도 있습니다. 특히 배열의 초기 인덱스가 0에서 시작되지 않거나 배열에 충분한 요소가 없으면 음의 지수는 약간의 혼란을 유발할 수 있습니다.
Array_Fill () 의 $ num 매개 변수가 크고 $ start_index가 음수 인 경우 존재하지 않는 배열의 위치에 액세스하려고 시도 할 수 있습니다. 예를 들어:
$array = array_fill(-10, 5, 'PHP');
print_r($array);
이 경우 -10은 배열 끝에서 10 번째 위치로 간주됩니다. 원래 배열이 비어 있거나 음수 인덱스에서 패딩을 지원하기에 충분하지 않으면 예상치 못한 결과가 발생할 수 있습니다. PHP는 오류를보고하지 않지만 동작으로 인해 예상 결과를 얻지 못할 것입니다.
배열의 원래 인덱스가 0에서 시작되지 않을 때 음의 지수의 동작은 혼란을 유발할 수 있습니다. 예를 들어, 배열이 이미 있고 Array_fill () 에 전달 된 경우 $ start_index 가 음수이면 결과 배열의 인덱스는 예측할 수 없습니다.
위의 문제를 피하려면 Array_Fill ()을 사용할 때 전달 된 $ start_index를 다시 확인하는 것이 좋습니다. 배열 끝에서 패딩을 시작 해야하는 경우, 음수 인덱스를 명시 적으로 사용할 수 있지만, 특히 동적 데이터를 처리 할 때 마이너스 인덱스로 인해 패딩이 배열의 경계를 초과하지 않도록하십시오.
또한 채우기 동작이 예상 범위를 초과하는 것을 원하지 않으면 먼저 $ start_index가 합리적인지 또는 Array_Slice () 와 같은 함수를 사용하여 채우기 전에 배열의 크기를 제한 할 수 있습니다.