PHP 개발에서 Array_Slice 함수는 매우 실용적인 배열 작동 기능으로, 배열에서 지정된 요소를 반환 값으로 잘라낼 수 있습니다. 그러나 많은 초보자와 심지어 중간 프로그래머는 종종 Array_Slice가 원래 배열을 직접 수정하여 코드 논리의 혼란과 디버깅의 어려움을 초래할 것이라고 잘못 생각합니다. 이 기사는 Array_Slice 의 반환 값 특성을 자세히 분석하고 원래 배열을 수정하지 않는 이유를 밝히고 트랩을 피하기위한 예제를 제공합니다.
Array_Slice 의 기본 구문은 다음과 같습니다.
array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
$ 배열 : 원래 배열.
$ 오프셋 : 시작 인터셉트가 지원되는 위치는 배열의 꼬리에서 카운트 다운을 나타냅니다.
$ 길이 : 가로 채기 길이, 기본적으로 배열의 나머지 요소 수입니다.
$ preserve_keys : 원래 배열의 키 이름을 유지할지 여부, 기본값 거짓.
이 함수는 원래 배열에 대한 참조가 아닌 새로운 차단 된 배열을 반환합니다.
Array_Slice는 원래 배열에서 지정된 간격 요소를 복사하는 것으로 구성된 "새 배열"을 반환합니다. PHP의 배열 복사는 값으로 전달됩니다 (기본 구현에는 사본 온서 최적 최적화가 있지만) 기능의 전달 된 배열에서 내장 수정 작업은 수행되지 않습니다. 다시 말해, Array_Slice 의 원래 의도는 원래 배열의 무결성과 불변성을 유지하는 것입니다.
따라서 Array_Slice를 사용하면 새로운 차단 결과가 새로운 배열이며 원래 배열은 변경되지 않습니다.
$fruits = ['apple', 'banana', 'cherry', 'date'];
$sliced = array_slice($fruits, 1, 2);
print_r($sliced);
// 산출:
// Array
// (
// [0] => banana
// [1] => cherry
// )
print_r($fruits);
// 산출:
// Array
// (
// [0] => apple
// [1] => banana
// [2] => cherry
// [3] => date
// )
여기서는 $ Fruits 어레이가 수정되지 않았으며 $ Sliced는 가로 채워진 새로운 배열입니다.
나는 원래 배열이 수정되었다고 잘못 생각했다 . <br> 많은 사람들이 array_slice를 사용하고 원래 배열을 다시 인쇄하고 원래 배열이 변경되지 않았다는 것을 알기 때문에 코드 로직이 잘못되었다고 생각합니다. 실제로 Array_Slice는 원래 배열을 변경하지 않습니다.
Array_Slice를 사용하여 배열을 직접 수정하십시오 <br> 어떤 사람들은 다음 코드를 작성할 수 있습니다.
$arr = [1,2,3,4,5];
$arr = array_slice($arr, 2);
이것은 실제로 인터셉트 결과를 원래 배열 변수에 다시 할당합니다. 현재 변수는 새 배열을 가리키며 원래 배열은 폐기됩니다. 배열을 "수정"하려면 Array_Slice 기능 자체가 배열을 변경하는 대신 원래 배열을 새 배열로 교체합니다.
키 이름이 동일하게 유지되기를 바랍니다. 매개 변수를 전달하는 것을 잊어 버립니다 <br> 기본적으로 네 번째 매개 변수가 true 로 설정되지 않는 한 Array_Slice Reindex (0부터 시작)에 의해 반환 된 배열은 기본적으로.
$arr = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];
$slice = array_slice($arr, 1, 2);
print_r($slice);
// 산출:
// Array
// (
// [0] => banana
// [1] => cherry
// )
여기서 키 이름은 숫자 인덱스가됩니다. 키 이름을 유지하려면 네 번째 매개 변수를 전달해야합니다.
$slice = array_slice($arr, 1, 2, true);
print_r($slice);
// 산출:
// Array
// (
// [b] => banana
// [c] => cherry
// )
Array_Slice는 새 배열을 반환하고 전달 된 배열 자체를 변경하지 않을 것입니다.
배열을 "업데이트"하려면 값을 원래 변수 또는 기타 변수에 수동으로 할당해야합니다.
키 이름의 손실을 피하기 위해 키 이름을 유지하고 진정으로 통과 해야하는지 확인하십시오.
원래 배열을 직접 수정하는 함수 인 Array_Splice 와의 혼동을 피하십시오.
Array_Slice 는 PHP의 배열을 가로 채는 기능입니다. 원래 배열을 수정하지 않고 단순히 새 배열을 반환하도록 설계되었습니다. 이 설계는 부작용을 피하고 코드를 더 안전하고 유지 관리 할 수있게합니다. 이를 이해하면 개발자가 오해와 함정을 피하고 배열 차단 기능을 올바르게 사용하며 코드 품질을 향상시키는 데 도움이 될 수 있습니다.
원래 배열을 삭제, 삽입 및 수정 해야하는 경우 원래 배열을 직접 변경하는 기능 인 Array_Splice를 사용할 수 있습니다. Array intercept의 경우 Array_Slice는 불변 및 반환되는 새 배열을위한 선호되는 도구입니다.