PHP에서 처리 어레이는 매우 일반적인 작업이며 Array_Slice 함수는 배열에서 특정 단편을 가로 채는 강력한 도구입니다. 페이지 매김 디스플레이, 데이터 분할 또는 배열의 일부를 추출하든 Array_Slice는 쉽게 유능 할 수 있습니다. 이 기사는 배열을보다 효율적으로 조작하는 데 도움이되는 Array_Slice 사용법 팁, 모범 사례 및 성능 최적화 제안에 중점을 둘 것입니다.
Array_Slice 함수는 다음과 같이 정의됩니다.
array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
$ 배열 : 배열이 가로 채 웁니다
$ OFFSET : 시작 위치 (배열 끝에서 시작하는 것을 나타내는 음수를 지원합니다)
$ 길이 : 가로 채기 길이 (선택 사항)
$ preserve_keys : 원래 배열의 키 이름을 보존할지 여부 (Default False)
예:
<?php
$arr = [1, 2, 3, 4, 5];
$slice = array_slice($arr, 1, 3);
print_r($slice);
?>
산출:
Array
(
[0] => 2
[1] => 3
[2] => 4
)
다음은 첨자 1에서 시작하는 3 가지 요소입니다.
$ 오프셋이 양수 인 경우 위치는 배열의 시작부터 계산됩니다.
$ 오프셋이 음수 일 때 배열 끝에서 앞으로 계산하십시오.
$ 길이가 생략되거나 null 이면 기본적으로 배열 끝까지 가로 채 웁니다.
이 두 매개 변수를 이해하고 음수 인덱스로 인한 데이터 차단 오류를 피하십시오.
기본적으로 Array_Slice는 일반적으로 인덱싱 어레이에 적합한 키 이름을 재설정하지만 연관 배열이고 키 이름을 유지하려면 네 번째 매개 변수를 true 로 설정하십시오.
<?php
$assoc = ['a' => 1, 'b' => 2, 'c' => 3];
$slice = array_slice($assoc, 1, null, true);
print_r($slice);
?>
산출:
Array
(
[b] => 2
[c] => 3
)
페이징에 대한 일반적인 요구 사항은 배열을 페이지 번호별로 가로 채고 Count () 함수와 함께 $ 오프셋 및 $ 길이를 동적으로 계산하여 배열 경계를 초과하는 것을 방지하는 것입니다.
<?php
$page = 2;
$pageSize = 3;
$offset = ($page - 1) * $pageSize;
$data = range(1, 10);
$pageData = array_slice($data, $offset, $pageSize);
print_r($pageData);
?>
산출:
Array
(
[0] => 4
[1] => 5
[2] => 6
)
루프 또는 빈번한 작업, 특히 큰 배열에서 Array_Slice를 사용하는 경우 성능 병목 현상이 발생할 수 있습니다. 통화 수를 줄이려면 시작점과 길이를 한 번에 계산하십시오.
데이터 볼륨이 매우 크면 생성기 ( 수율 )를 사용하여 메모리 소비를 줄이기 위해 필요한 요소를 점차적으로 생성하는 것을 고려하십시오.
<?php
function getSlice($array, $offset, $length) {
$count = 0;
foreach ($array as $key => $value) {
if ($count >= $offset && $count < $offset + $length) {
yield $key => $value;
}
$count++;
if ($count >= $offset + $length) break;
}
}
$arr = range(1, 1000000);
$slice = iterator_to_array(getSlice($arr, 1000, 10));
print_r($slice);
?>
이것은 필요한 부품 만 생성하므로 성능과 메모리 친화적입니다.
동일한 큰 배열에서 동일한 조각을 자주 가로 채려면 결과를 캐시하고 반복 계산을 피하십시오.
때로는 코드에서 URL을 작동합니다. 도메인 이름 교체 요구를 만나면 문자열 함수와 함께 처리 할 수 있습니다. 예를 들어 :
<?php
$url = 'https://example.com/path/to/resource';
$newUrl = preg_replace('#^(https?://)[^/]+#', '$1gitbox.net', $url);
echo $newUrl;
?>
산출:
https://gitbox.net/path/to/resource
이 코드는 URL의 도메인 이름을 Unified Management 또는 테스트를 위해 gitbox.net 으로 대체합니다.