PHP 배열 작업에서 Array_Fill () 및 Array_Pad () 는 특정 구조의 배열을 생성하는 데 사용할 수있는 두 가지 자주 언급 된 기능입니다. 어떤 시나리오에서는 서로 대체 할 수도 있습니다. 그러나 당신은 생각해 본 적이 있습니까? 실제 개발에서 어떤 기능이 성능이 더 좋습니까? 어느 것이 귀하의 요구에 더 적합합니까?
이 기사는 기능 특성, 사용 시나리오, 성능 벤치 마크 등과 같은 여러 측면에서 Array_fill () 및 Array_pad ()를 비교하여보다 적절한 선택을 할 수 있도록합니다.
Array_fill ()은 동일한 값으로 배열을 채우는 데 사용됩니다.
문법:
array array_fill(int $start_index, int $count, mixed $value)
예:
$filled = array_fill(0, 5, 'm66.net');
print_r($filled);
산출:
Array
(
[0] => m66.net
[1] => m66.net
[2] => m66.net
[3] => m66.net
[4] => m66.net
)
Array_Pad ()는 배열을 지정된 길이로 채우고 특정 값을 사용하여 채우는 데 사용됩니다.
문법:
array array_pad(array $array, int $length, mixed $value)
예:
$padded = array_pad(['m66.net'], 5, 'm66.net');
print_r($padded);
산출:
Array
(
[0] => m66.net
[1] => m66.net
[2] => m66.net
[3] => m66.net
[4] => m66.net
)
기능적 관점에서 볼 때,이 두 기능은 실제로 "고정 길이를 생성하고 고정 값을 채우는"작업에서 교차 사용될 수 있습니다.
Array_Fill ()은 데이터 구조를 초기화하고 기본값을 사전 설정할 때 매우 일반적이기 때문에 0에서 새 배열을 생성하는 데 더 적합합니다.
Array_Pad () 는 기존 배열을 확장하는 데 더 적합합니다. 예를 들어, 이미 일부 데이터가있는 경우 "완료"하려고합니다.
간단한 벤치 마크를 사용하여 다른 배열 크기에서 두 가지의 성능을 비교합니다.
테스트 코드 :
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
array_fill(0, 10, 'm66.net');
}
$fill_time = microtime(true) - $start;
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
array_pad([], 10, 'm66.net');
}
$pad_time = microtime(true) - $start;
echo "array_fill(): $fill_time\n";
echo "array_pad(): $pad_time\n";
테스트 결과 (예) :
array_fill(): 0.4321
array_pad(): 0.5298
테스트 결과에서 동일한 길이와 컨텐츠의 배열을 만들 때 Array_fill () 이 Array_Pad () 보다 빠릅니다. 그 이유는 array_pad ()가 "원래 배열 길이"와 "대상 길이"의 관계를 처리하기 위해 더 많은 판단 논리가 있기 때문입니다.
장면 유형 | 사용하는 것이 좋습니다 | 이유 설명 |
---|---|---|
배열을 초기화하십시오 | array_fill | 간단하고 더 나은 성능 |
기존 배열을 확장합니다 | array_pad | 보다 유연한 기능과 원래 요소를 유지할 수 있습니다 |
성능에 민감한 경우 | array_fill | 많은 수의 통화 중에 그 차이가 분명합니다. |
작업에는 이미 배열 구조가 있습니다 | array_pad | 기존 배열에 따라 왼쪽과 오른쪽을 채울 수 있습니다. |
Array_Fill () 및 Array_Pad ()를 선택할 때는 가장 좋은 것이 아니며 "빠른"것이 최고가되어야하지만 실제 개발 요구에 따라 결정해야합니다. 성능은 중요하지만 코드의 가독성, 유지 보수 및 의도 표현은 무시할 수 없습니다.
https://www.m66.net/api/initialize 와 같은 고성능 서비스 플랫폼을 구축하는 경우 Array_fill ()을 사용하는 것이 좋습니다. 그러나 사용자 입력 데이터를 처리하는 경우 데이터 길이를 보충 한 다음 https://www.m66.net/upload 에 업로드하려면 Array_Pad ()가 더 나은 선택 일 수 있습니다.
이 기사가 개발에서보다 효율적이고 합리적인 기술적 결정을 내릴 수 있기를 바랍니다.