PHP에서 Array_Slice 함수는 종종 배열에서 요소의 일부를 추출하는 데 사용되지만 때로는 빈 배열을 반환하는 것을 발견 할 수도 있습니다. 이 기사는 Array_Slice가 빈 배열을 반환하고 문제를 신속하게 찾아서 문제를 해결하는 데 도움이되는 해당 솔루션을 제공하는 일반적인 이유를 심도에 대해 탐색합니다.
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 = []; // 오프셋超出,빈 배열 또는 기타 처리를 수동으로 할당합니다
}
?>
세 번째 매개 변수 길이는 추출 할 요소의 수를 나타냅니다. 지정된 길이가 0이면 Array_Slice는 빈 배열을 반환합니다. 또한 음수 길이는 배열 끝에서 몇 개의 요소가 제외되는지를 나타내지 만, 음수 길이의 절대 값이 너무 크면 빈 배열의 반환으로 이어질 수도 있습니다.
<?php
$arr = [1, 2, 3, 4, 5];
var_dump(array_slice($arr, 2, 0)); // 빈 배열
var_dump(array_slice($arr, 2, -10)); // 빈 배열,음수 길이는 범위를 초과합니다
?>
솔루션 : 길이 매개 변수가 합리적인지 또는 직접 생략하고 기능이 오프셋에서 시작하는 모든 요소를 반환하도록합니다.
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 = [];
}
?>
Array_Slice는 연관 배열을 처리 할 때 원래 키 이름을 유지하지만 결과에서 특정 작업을 수행 할 때 키 이름을 무시하면 예상치 못한 결과로 이어질 수 있습니다.
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3];
$result = array_slice($arr, 1, 1, true);
var_dump($result); // 여전히 연관 배열,키 이름 예약
?>
Preserve_keys 가 False 로 설정되면 키 이름이 다시 표시되며, 이는 일반적으로 빈 배열을 일으키지 않지만 인덱스가 혼란스러워지면주의를 기울여야합니다.
Array_Slice는 배열의 첫 번째 레이어 만 조작 할 수 있으며 다차원 배열에서 더 깊은 요소를 직접 추출 할 수 없습니다. 오용이 사용되면 빈 배열이 반환 될 수 있습니다.
<?php
$arr = [
['id' => 1, 'name' => 'Tom'],
['id' => 2, 'name' => 'Jerry']
];
$result = array_slice($arr[0], 5, 2); // $arr[0] 서브 어레이입니다,길이가 충분하지 않습니다,返回빈 배열
?>
솔루션 : 먼저 배열의 길이가 요구 사항을 충족하는지 확인하기 위해 슬라이스 해야하는 슬라이스 수준을 확인하십시오.
<?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가 빈 배열을 반환하는 데 효과적으로 피할 수 있습니다. 코드를 작성할 때 더 많은 것을 검사하여 매개 변수가 합리적이며 문제가 자연스럽게 해결 될 것입니다.