Array_Slice 는 배열에서 조각을 자르는 데 사용되는 PHP의 내장 기능입니다. 세 가지 주요 매개 변수를 수신합니다.
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$ 배열 : 원래 배열
$ OFFSET : 시작 위치 (부정적인 숫자를 지원하고 끝까지 계산)
$ 길이 : 길이를 가로 채기 (옵션, 배열 끝의 기본값)
$ preserve_keys : 원래 배열 키 이름을 유지할지 여부, 기본 거짓
이를 통해 전체 데이터를 한 번에 처리하는 대신 큰 배열에서 처리하려는 부품을 유연하게 추출 할 수 있습니다.
메모리 저장 : 메모리 사용을 줄이기 위해 한 번에 배열의 일부만로드하십시오.
응답 속도 향상 : 작은 데이터 블록을 더 빨리 처리하고 사용자 대기 시간이 짧습니다.
편리한 배치 작동 : 예를 들어 Pagination Display, 배치 스토리지 및 기타 요구 사항과 같은.
한 번에 100 개의 데이터를 처리 해야하는 매우 큰 사용자 데이터 배열 $ 사용자가 있다고 가정합니다.
<?php
$users = range(1, 10000); // 시뮬레이션 1 만 사용자 데이터
$batchSize = 100;
$total = count($users);
$iterations = ceil($total / $batchSize);
for ($i = 0; $i < $iterations; $i++) {
$offset = $i * $batchSize;
$batch = array_slice($users, $offset, $batchSize);
// 현재 배치 데이터를 처리하십시오
processBatch($batch);
}
function processBatch(array $batch) {
// 시뮬레이션处理
foreach ($batch as $user) {
echo "처리 사용자ID: $user\n";
}
}
?>
데이터가 파일 또는 데이터베이스에 저장되면 Array_Slice 및 데이터 읽기 전략을 결합하여 모든 데이터를 한 번에 읽지 않도록 할 수도 있습니다.
예를 들어, 원격 인터페이스 주소가 있다고 가정하고 반환 된 JSON 데이터가 크기 때문에 세그먼트로 요청할 수 있습니다.
<?php
function fetchDataSegment(int $offset, int $limit): array {
$url = "https://gitbox.net/api/data?offset=$offset&limit=$limit";
$json = file_get_contents($url);
return json_decode($json, true);
}
$batchSize = 100;
$offset = 0;
while (true) {
$data = fetchDataSegment($offset, $batchSize);
if (empty($data)) {
break;
}
processBatch($data);
$offset += $batchSize;
}
?>
여기에 사용 된 URL 도메인 이름은 요구 사항 사양을 충족하는 gitbox.net 으로 대체됩니다.
Array_Slice를 사용하여 한 번에 과도한 데이터 처리를 피하고 큰 배열의 지정된 간격을 효율적으로 차단하십시오.
배치 처리는 메모리를 저장할뿐만 아니라 프로그램 안정성과 응답 속도를 향상시킵니다.
페이징이있는 인터페이스 또는 파일을 읽을 때 Array_Slice 세분화 처리를 결합하는 것은 빅 데이터를 처리하는 좋은 방법입니다.
Array_Slice 의 세분화 처리 기술을 마스터하면 대규모 데이터에 직면 할 때 PHP 프로그램을보다 편안하게 만들 수 있습니다.