> For example, with
> 
>    $a = ['foo', 'bar', 'baz’];
> 
> `is_list()` will return `true`, but if you run `$a` through `asort()`,
> `is_list()` will return `false` because the keys are no longer
> consecutive integers, but is there any doubt this is still a list?
> Maybe in a pure sense, it’s not, but I think this could be confusing.
> 

tl;dr: Could add flags to is_array.

In the library I mentioned, if given a 0-indexed, sequentially keyed array 
(list), I would sort or merge and pass the result to array_values()...return 
same type given of the three options (map, list, dict).

But that might feel more like introducing a new type - rather than having a 
native way to check:

is_indexed_array(array $array[, int $flags = PHP_MAP])

SEQUENTIAL
SEQUENTIAL_DESC
STARTS_AT_0

is_associative_array(array $array)

or “array” could come first to create a triple set of is_array functions. Which 
brings me to thinking a flag could ge added to is_array.

- no new functions to remember in the SL
- should be able to do in a non-BC way, default argument value of PHP map
- allows type safety fo array keyword while letting developers opt-into another 
layer:

ex. using string with specifying string details

function hello(string $arg) {
  if (str_starts_with($arg, “wor”)) {
  } else {
    trigger_error
  }
}

Cheers,
Josh

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to