PHP 8.1.2 Released!

array_is_list

(PHP 8 >= 8.1.0)

array_is_listChecks whether a given array is a list

Description

array_is_list(array $array): bool

Determines if the given array is a list. An array is considered a list if its keys consist of consecutive numbers from 0 to count($array)-1.

Parameters

array

The array being evaluated.

Return Values

Returns true if array is a list, false otherwise.

Examples

Example #1 array_is_list() example

<?php

array_is_list
([]); // true
array_is_list(['apple'23]); // true
array_is_list([=> 'apple''orange']); // true

// The array does not start at 0
array_is_list([=> 'apple''orange']); // false

// The keys are not in the correct order
array_is_list([=> 'apple'=> 'orange']); // false

// Non-integer keys
array_is_list([=> 'apple''foo' => 'bar']); // false

// Non-consecutive keys
array_is_list([=> 'apple'=> 'bar']); // false
?>

Notes

Note:

This function returns true on empty arrays.

See Also

add a note add a note

User Contributed Notes 3 notes

up
19
Matteo Galletti
2 months ago
Polyfill implementation for PHP versions lower than 8.1.

<?php
if (!function_exists('array_is_list'))
{
    function
array_is_list(array $a)
    {
        return
$a === [] || (array_keys($a) === range(0, count($a) - 1));
    }
}
?>
up
5
info at ensostudio dot ru
2 months ago
old school polyfill (:
<?php
if (!function_exists('array_is_list')) {
    function
array_is_list(array $array)
    {
        if (
$array === []) {
             return
true;
        }
       
$keys = array_keys($array);
        return
$keys === array_keys($keys);
    }
}
?>
up
0
phpnet at jesseschalken dot com
17 hours ago
Polyfills that call `array_keys()`, `array_values()` or `range()` are inefficient because they create new arrays unnecessarily.

Please use this polyfill instead which creates no new arrays and only does a single pass over the given array.

<?php

if (!function_exists("array_is_list")) {
    function
array_is_list(array $array): bool
   
{
       
$i = 0;
        foreach (
$array as $k => $v) {
            if (
$k !== $i++) {
                return
false;
            }
        }
        return
true;
    }
}

?>
To Top