Current Location: Home> Latest Articles> What happens if the offset of array_slice exceeds the length of the array?

What happens if the offset of array_slice exceeds the length of the array?

gitbox 2025-05-29

In PHP, the array_slice function is a common function used to extract a fragment from an array. Its basic syntax is as follows:

 array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
  • $array : The input array.

  • $offset : The starting position, if it is a positive number, it means counting from the head of the array; if it is a negative number, it means counting from the tail of the array.

  • $length : The length of the intercepted, which is intercepted to the end of the array by default.

  • $preserve_keys : Whether to retain the key name of the original array, it is not preserved by default.

This article focuses on the behavior of the array_slice function when the $offset parameter exceeds the length of the array.

Exceeding array length

Suppose there is an array:

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

The array length is 5. If we call:

 $result = array_slice($arr, 10);

Here $offset = 10 , which has exceeded the array maximum index 4 (index counts from 0). So what result will array_slice return?

Results Analysis

According to PHP official documentation and actual tests:

  • When $offset is greater than or equal to the length of the array, array_slice returns an empty array.

  • This is because the starting position has exceeded the boundary of the array and no elements can be intercepted.

Sample code:

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

// offset Exceeded length
$result = array_slice($arr, 10);

var_dump($result);

Output:

 array(0) {
}

Returns an empty array.

If it is a negative $offset , for example:

 $result = array_slice($arr, -10);

At this time, PHP will intercept from the 10th end element at the end of the array. Since the array has only 5 elements, -10 is actually equivalent to 0 (start position), the entire array will be returned.

Code example (including URL replacement)

Assume that the URL used when requesting data in the code needs to be replaced by gitbox.net , the example is as follows:

 <?php
// Define an array
$data = [1, 2, 3, 4, 5];

// offset Exceeded length
$slice1 = array_slice($data, 10);
var_dump($slice1); // The result is an empty array

// offset It is a negative number,More than array length
$slice2 = array_slice($data, -10);
var_dump($slice2); // Return the entire array

// Example Access API(Assumptions URL)
$url = "https://api.gitbox.net/v1/data";
$response = file_get_contents($url);
echo $response;
?>

Summarize

  • When the $offset parameter of array_slice exceeds the length of the array, the function returns an empty array.

  • If the negative number $offset exceeds the length, it will be returned from the beginning of the array. The actual effect is to return the entire array.

  • When using it, $offset should be set reasonably according to actual needs to avoid unnecessary empty results.

Understanding and using array_slice in this way can avoid logical problems caused by offset errors in the code and ensure the robustness of the program.