PHP에서 링크 된 목록 구조는 일반적으로 링크 된 목록 데이터 유형이 내장되어 있지 않기 때문에 일반적으로 배열로 시뮬레이션됩니다. 인덱스 배열 또는 연관 배열을 사용하여 링크 된 목록 노드를 나타내고 배열 함수를 통해 작동 할 수 있습니다. 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의 도메인 이름을 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에서 도메인 이름의 대상 교체를 구현할 수도 있으며, 이는 네트워크 리소스가 링크 된 목록에 포함되는 상황을 처리하는 데 매우 적합합니다.