현재 위치: > 최신 기사 목록> Array_Slice가 빈 결과가없는 이유는 무엇입니까? 일반적인 원인 분석

Array_Slice가 빈 결과가없는 이유는 무엇입니까? 일반적인 원인 분석

gitbox 2025-05-27

PHP에서 Array_Slice 함수는 종종 배열에서 요소의 일부를 추출하는 데 사용되지만 때로는 빈 배열을 반환하는 것을 발견 할 수도 있습니다. 이 기사는 Array_Slice가 빈 배열을 반환하고 문제를 신속하게 찾아서 문제를 해결하는 데 도움이되는 해당 솔루션을 제공하는 일반적인 이유를 심도에 대해 탐색합니다.


1. 시작 오프셋은 배열 길이를 초과합니다

Array_Slice 의 두 번째 매개 변수는 시작 오프셋입니다. 이 값이 배열의 길이보다 크거나 같으면 반환 결과는 빈 배열이어야합니다.

 <?php
$arr = [1, 2, 3, 4, 5];
$result = array_slice($arr, 10); // 배열 길이는 전용입니다5,오프셋10범위를 벗어납니다
var_dump($result); // array(0) { }
?>

솔루션 : 오프셋이 합리적인 범위 내에 있는지 확인하고 COUNT () 함수를 사용하여 배열 길이를 판단하십시오.

 <?php
$offset = 10;
if ($offset < count($arr)) {
    $result = array_slice($arr, $offset);
} else {
    $result = []; // 오프셋超出,빈 배열 또는 기타 처리를 수동으로 할당합니다
}
?>

2. 길이 매개 변수는 0 또는 음수이며 범위를 벗어납니다.

세 번째 매개 변수 길이는 추출 할 요소의 수를 나타냅니다. 지정된 길이가 0이면 Array_Slice는 빈 배열을 반환합니다. 또한 음수 길이는 배열 끝에서 몇 개의 요소가 제외되는지를 나타내지 만, 음수 길이의 절대 값이 너무 크면 빈 배열의 반환으로 이어질 수도 있습니다.

 <?php
$arr = [1, 2, 3, 4, 5];
var_dump(array_slice($arr, 2, 0));    // 빈 배열
var_dump(array_slice($arr, 2, -10));  // 빈 배열,음수 길이는 범위를 초과합니다
?>

솔루션 : 길이 매개 변수가 합리적인지 또는 직접 생략하고 기능이 오프셋에서 시작하는 모든 요소를 ​​반환하도록합니다.


3. 원래 변수는 배열 또는 빈 배열이 아닙니다.

Array_Slice는 배열 만 작동 할 수 있습니다. 전달 된 변수가 배열이 아니거나 배열 자체가 비어 있으면 반환 된 결과는 빈 배열이됩니다.

 <?php
$notArray = null;
var_dump(array_slice($notArray, 0)); // 报错或빈 배열

$emptyArray = [];
var_dump(array_slice($emptyArray, 0)); // 빈 배열
?>

솔루션 : 변수가 배열이고 호출하기 전에 비어 있지 않은지 확인하십시오.

 <?php
if (is_array($arr) && !empty($arr)) {
    $result = array_slice($arr, 0);
} else {
    $result = [];
}
?>

4. 연관 배열을 사용할 때

Array_Slice는 연관 배열을 처리 할 때 원래 키 이름을 유지하지만 결과에서 특정 작업을 수행 할 때 키 이름을 무시하면 예상치 못한 결과로 이어질 수 있습니다.

 <?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3];
$result = array_slice($arr, 1, 1, true);
var_dump($result); // 여전히 연관 배열,키 이름 예약
?>

Preserve_keysFalse 로 설정되면 키 이름이 다시 표시되며, 이는 일반적으로 빈 배열을 일으키지 않지만 인덱스가 혼란스러워지면주의를 기울여야합니다.


5. 다차원 배열에서 오용

Array_Slice는 배열의 첫 번째 레이어 만 조작 할 수 있으며 다차원 배열에서 더 깊은 요소를 직접 추출 할 수 없습니다. 오용이 사용되면 빈 배열이 반환 될 수 있습니다.

 <?php
$arr = [
    ['id' => 1, 'name' => 'Tom'],
    ['id' => 2, 'name' => 'Jerry']
];
$result = array_slice($arr[0], 5, 2); // $arr[0] 서브 어레이입니다,길이가 충분하지 않습니다,返回빈 배열
?>

솔루션 : 먼저 배열의 길이가 요구 사항을 충족하는지 확인하기 위해 슬라이스 해야하는 슬라이스 수준을 확인하십시오.


6. 코드 예제 요약

 <?php
$arr = [10, 20, 30, 40, 50];

// 올바른 사용법:에서2요소 복용을 시작하십시오3개별
$result = array_slice($arr, 1, 3);
print_r($result); // 산출: [20, 30, 40]

// 잘못된 사용:오프셋범위를 벗어납니다,返回빈 배열
$result = array_slice($arr, 10, 3);
print_r($result); // 산출: []

// 잘못된 사용:길이는입니다0,返回빈 배열
$result = array_slice($arr, 1, 0);
print_r($result); // 산출: []

// 빈 배열输入,返回빈 배열
$result = array_slice([], 0, 1);
print_r($result); // 산출: []
?>

요약

Array_Slice는 빈 배열을 반환하며 일반적인 이유는 다음과 같습니다.

  • 오프셋은 배열 길이보다 크거나 동일합니다.

  • 길이 매개 변수는 0이거나 음의 길이는 불합리합니다

  • 전달되는 것은 배열이 아니거나 배열이 비어 있습니다.

  • 다차원 배열 조각의 오용

  • 연관 배열을 사용할 때 키 이름을 무시하십시오

이러한 핵심 사항을 이해하는 한 Array_Slice가 빈 배열을 반환하는 데 효과적으로 피할 수 있습니다. 코드를 작성할 때 더 많은 것을 검사하여 매개 변수가 합리적이며 문제가 자연스럽게 해결 될 것입니다.