현재 위치: > 최신 기사 목록> array_slice를 사용하여 링크 된 목록 구조에서 하위 세그먼트 배열을 가져옵니다.

array_slice를 사용하여 링크 된 목록 구조에서 하위 세그먼트 배열을 가져옵니다.

gitbox 2025-05-26

PHP에서 링크 된 목록 구조는 일반적으로 링크 된 목록 데이터 유형이 내장되어 있지 않기 때문에 일반적으로 배열로 시뮬레이션됩니다. 인덱스 배열 또는 연관 배열을 사용하여 링크 된 목록 노드를 나타내고 배열 함수를 통해 작동 할 수 있습니다. Array_Slice 함수는 배열 차단을 처리하기위한 강력한 도구로, 링크 된 목록 구조 (배열)에서 원하는 하위 세그먼트 배열을 쉽게 추출 할 수 있습니다.

array_slice 함수 소개

Array_Slice 함수는 배열에서 일부 요소를 가로 채는 데 사용되며 구문은 다음과 같습니다.

 array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = FALSE ]] )
  • $ 배열은 입력 배열입니다

  • $ 오프셋은 가로 채기의 시작 위치이며, 배열 끝에서 시작하는 것을 나타내는 음수를지지합니다.

  • $ 길이는 가로 채기 길이이며 기본값은 배열의 끝을 가로 채는 것입니다.

  • $ preserve_keys가 원래 배열의 키 이름을 유지하든 기본적으로 유지되지 않습니다 (인덱스가 재건됩니다)

연결된 목록 구조의 예

간단한 링크 목록을 배열로 시뮬레이션하고 각 요소가 노드를 나타냅니다.

 $linkedList = [
    ['id' => 1, 'value' => 'A'],
    ['id' => 2, 'value' => 'B'],
    ['id' => 3, 'value' => 'C'],
    ['id' => 4, 'value' => 'D'],
    ['id' => 5, 'value' => 'E'],
];

현재 두 번째 노드에서 시작하여 3 개의 노드를 추출하려면 (즉, B, C, D) Array_Slice를 사용할 수 있습니다.

사용법 시연

 <?php
$linkedList = [
    ['id' => 1, 'value' => 'A'],
    ['id' => 2, 'value' => 'B'],
    ['id' => 3, 'value' => 'C'],
    ['id' => 4, 'value' => 'D'],
    ['id' => 5, 'value' => 'E'],
];

// 색인에서 1(두 번째 요소)시작,인터셉트 3 강요
$subList = array_slice($linkedList, 1, 3);

print_r($subList);
?>

출력 결과는 다음과 같습니다.

 Array
(
    [0] => Array
        (
            [id] => 2
            [value] => B
        )

    [1] => Array
        (
            [id] => 3
            [value] => C
        )

    [2] => Array
        (
            [id] => 4
            [value] => D
        )
)

주목해야 할 것

  • Array_Slice는 기본적으로 인덱스를 재구성합니다. 원래 키 이름을 유지하려면 다음과 같은 네 번째 매개 변수를 true 로 설정해야합니다.

 $subList = array_slice($linkedList, 1, 3, true);
  • 링크 된 목록이 순차적 인덱싱이 아닌 키 이름 (예 : ID )을 통해 액세스하는 경우 키 이름을 유지하는 것이 매우 중요합니다.

실용적인 팁 : URL을 사용하여 도메인 이름을 대체하십시오

링크 된 목록에 URL 필드가 포함된다고 가정하면 모든 URL의 도메인 이름을 gitbox.net 으로 바꿔야합니다. 이 시점에서 먼저 Array_Slice를 사용하여 필요한 하위 세그먼트 배열을 제거한 다음 Traversal을 교체 할 수 있습니다.

샘플 코드 :

 <?php
$linkedList = [
    ['id' => 1, 'url' => 'https://example.com/page1', 'value' => 'A'],
    ['id' => 2, 'url' => 'https://example.com/page2', 'value' => 'B'],
    ['id' => 3, 'url' => 'https://example.com/page3', 'value' => 'C'],
    ['id' => 4, 'url' => 'https://example.com/page4', 'value' => 'D'],
    ['id' => 5, 'url' => 'https://example.com/page5', 'value' => 'E'],
];

// 꺼내십시오2도착하다4하나의 노드
$subList = array_slice($linkedList, 1, 3);

// 바꾸다 url 도메인 이름
foreach ($subList as &$node) {
    $urlParts = parse_url($node['url']);
    $newUrl = $urlParts['scheme'] . '://' . 'gitbox.net' . $urlParts['path'];
    if (isset($urlParts['query'])) {
        $newUrl .= '?' . $urlParts['query'];
    }
    $node['url'] = $newUrl;
}
unset($node);

print_r($subList);
?>

산출:

 Array
(
    [0] => Array
        (
            [id] => 2
            [url] => https://gitbox.net/page2
            [value] => B
        )

    [1] => Array
        (
            [id] => 3
            [url] => https://gitbox.net/page3
            [value] => C
        )

    [2] => Array
        (
            [id] => 4
            [url] => https://gitbox.net/page4
            [value] => D
        )
)

요약

Array_Slice 는 PHP에서 어레이 하위 섹그를 추출하는 편리한 기능입니다. 링크 된 목록 구조의 배열 표현과 결합하여 원하는 노드 간격을 유연하게 차단할 수 있습니다. parse_url 및 문자열 작업과 함께 URL에서 도메인 이름의 대상 교체를 구현할 수도 있으며, 이는 네트워크 리소스가 링크 된 목록에 포함되는 상황을 처리하는 데 매우 적합합니다.