현재 위치: > 최신 기사 목록> array_slice의 오프셋 및 길이의 의미 분석

array_slice의 오프셋 및 길이의 의미 분석

gitbox 2025-05-28

PHP에서 array_slice 함수는 배열에서 하위 배열을 가로 채기위한 매우 실용적인 배열 작동 함수입니다. 매개 변수 오프셋길이 의 긍정적 인 의미를 이해하는 것은 어레이의 유연한 조작에 중요합니다. 이 기사는이 두 매개 변수의 의미를 자세히 분석하고 예제를 결합하여 사용량을 마스터하는 데 도움이됩니다.

array_slice 함수 소개

array_slice 함수의 기본 구문은 다음과 같습니다.

 array_slice(array $array, int $offset, int $length = null, bool $preserve_keys = false): array
  • $ 배열 : 배열이 가로 채 웁니다.

  • $ 오프셋 : 인터셉트의 시작 위치.

  • $ 길이 : 가로 채기 길이 (선택 사항).

  • $ preserve_keys : 원래 배열의 키 이름을 보존할지 여부 (기본값은 보존되지 않음, 인덱스 재설정).

오프셋 매개 변수에 대한 자세한 설명

오프셋 매개 변수는 가로 채기 시작점의 위치를 ​​지정하며, 이는 양 또는 음수 일 수 있습니다.

  • 양의 오프셋 : 배열의 시작부터 시작, 0은 첫 번째 요소를 의미하며 1은 두 번째 요소를 의미합니다.

  • 음의 오프셋 : 배열 끝에서 시작하고 -1은 마지막 요소를 나타내고 -2는 두 번째 조단 요소 등을 나타냅니다.

예:

 $array = ['a', 'b', 'c', 'd', 'e'];

// offset = 2,세 번째 요소에서 시작합니다
print_r(array_slice($array, 2)); 
// 결과: ['c', 'd', 'e']

// offset = -2,두 번째 요소에서 시작합니다
print_r(array_slice($array, -2)); 
// 결과: ['d', 'e']

길이 매개 변수에 대한 자세한 설명

길이 매개 변수는 가로 채는 요소의 수를 지정하며 양수 및 음의 정수 일 수도 있습니다.

  • 양의 길이 : 지정된 수의 요소를 가로 채 웁니다.

  • 음수 길이 : 배열 끝이 가로 쳐리기 전 지정된 요소의 수가, 즉 끝에있는 여러 요소가 제외됩니다.

길이가 생략되면 배열의 오프셋 에서 끝까지 모든 요소가 기본적으로 가로 채 웁니다.

예:

 $array = ['a', 'b', 'c', 'd', 'e'];

// offset = 1, length = 3,두 번째 요소에서 시작점을 가로 채립니다3강요
print_r(array_slice($array, 1, 3)); 
// 결과: ['b', 'c', 'd']

// offset = 1, length = -1,인터셉트에서二강요开始,마지막을 제외하십시오一강요
print_r(array_slice($array, 1, -1)); 
// 결과: ['b', 'c', 'd']

오프셋과 길이의 조합에 대한 참고 사항

  • 오프셋 이 양수이고 길이가 음수 인 경우 길이는 배열 끝의 요소 수를 의미하며, 절편 범위는 ABS (길이)를 오프셋에서 배열 끝까지 빼는 것입니다.

  • 오프셋 이 음수이고 길이가 양수 인 경우, 두 번째 ABS (Offset) 요소에서 시작하는 길이 요소를 가로 채십시오.

  • 길이 의 절대 값이 배열의 나머지 요소 수를 초과하면 함수는 배열 경계를 자동으로 차단하고 오류를보고하지 않습니다.

Preserve_keys 매개 변수

기본적으로 Array_Slice 에 의해 반환 된 배열은 다시 표시됩니다 (0부터 시작). 원래 배열의 키 이름을 유지하려면 네 번째 매개 변수를 true 로 설정할 수 있습니다.

 $array = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];

// 주요 이름은 유지되지 않습니다
print_r(array_slice($array, 1, 2)); 
// 결과: [0 => 'banana', 1 => 'cherry']

// 예약 된 키 이름
print_r(array_slice($array, 1, 2, true)); 
// 결과: ['b' => 'banana', 'c' => 'cherry']

포괄적 인 예

 $array = [10, 20, 30, 40, 50, 60];

// 에서2강요开始인터셉트3강요
$result1 = array_slice($array, 1, 3);
print_r($result1); 
// 산출: [20, 30, 40]

// 마지막부터4강요开始,마지막으로 납치하십시오2강요(마지막을 제외하십시오1강요)
$result2 = array_slice($array, -4, -1);
print_r($result2); 
// 산출: [30, 40, 50]

// 마지막부터3강요开始,인터셉트2강요
$result3 = array_slice($array, -3, 2);
print_r($result3); 
// 산출: [40, 50]

// 에서3강요开始인터셉트所有元素,예약 된 키 이름
$result4 = array_slice($array, 2, null, true);
print_r($result4);
// 산출: [2 => 30, 3 => 40, 4 => 50, 5 => 60]

URL 예제와 결합

URL 목록 세트가 있다고 가정하고 일부 URL을 가로 채고 도메인 이름을 gitbox.net 으로 바꿔야합니다.

 $urls = [
    'https://example.com/page1',
    'https://example.com/page2',
    'https://example.com/page3',
    'https://example.com/page4',
];

// 에서二个URL开始인터셉트两个
$slicedUrls = array_slice($urls, 1, 2);

// 도메인 이름을 바꾸십시오
$processedUrls = array_map(function($url) {
    return preg_replace('#https?://[^/]+#', 'https://gitbox.net', $url);
}, $slicedUrls);

print_r($processedUrls);
// 산출:
// [
//     'https://gitbox.net/page2',
//     'https://gitbox.net/page3'
// ]