Hi internals, I've created the RFC https://wiki.php.net/rfc/is_list
This adds a new function `is_list(mixed $value): bool` that will return true if the type of $value is array and the array keys are `0 .. count($value)-1` in that order. It's well-known that PHP's `array` data type is rare among programming languages in that it supports both integer and string keys and that iteration order is important and guaranteed. (it is used for overlapping use cases - in many other languages, both vectors/lists/arrays and hash maps are available) While it is possible to efficiently check that something is an array, that array may still have string keys, not start from 0, have missing array offsets, or contain out of order keys. It can be useful to verify that the assumption that array keys are consecutive integers is correct, both for data that is being passed into a module or for validating data before returning it from a module. However, because it's currently inconvenient to do that, this has rarely been done in my experience. In performance-sensitive serializers or data encoders, it may also be useful to have an efficient check to distinguish lists from associative arrays. For example, json_encode does this when deciding to serialize a value as [0, 1, 2] instead of {“0”:0,“2”:1,“1”:1} for arrays depending on the key orders. Prior email threads/PRs have had others indicate interest in the ability to efficiently check if a PHP `array` has sequential ordered keys starting from 0 https://externals.io/message/109760 “Any interest in a list type?” https://externals.io/message/111744 “Request for couple memory optimized array improvements” Implementation: https://github.com/php/php-src/pull/6070 (some discussion is in the linked PR it was based on) Thanks, - Tyson -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php