On 18.06.2018 at 00:09, Enno Woortmann wrote:

> In my opinion that's the argument to return null for either parameters
> which aren't an array or empty arrays simply because a first/last key
> isn't present and null is the value to be returned for an undefined state.
> I've tested this behavior with other array_* functions which are
> provided in the PHP core and they provide null consistently, eg.:
> 
> root@WOL-Soft-DEVVM:/var/www/WOL-Soft# php -r "var_dump(array_keys(1));"
> PHP Warning:  array_keys() expects parameter 1 to be array, integer
> given in Command line code on line 1
> NULL
> root@WOL-Soft-DEVVM:/var/www/WOL-Soft# php -r
> "var_dump(array_values('hello'));"
> PHP Warning:  array_values() expects parameter 1 to be array, string
> given in Command line code on line 1
> NULL
> root@WOL-Soft-DEVVM:/var/www/WOL-Soft# php -r "var_dump(array_flip(null));"
> PHP Warning:  array_flip() expects parameter 1 to be array, null given
> in Command line code on line 1
> NULL

These return values are due to zend_parse_parameters() failures (i.e.
the given types don't match the expected types), and it's customary to
return NULL in this case (under strict typing an exception would be
thrown instead).  However, most functions signal other failures by
returning FALSE, for instance:

  var_dump(array_search('foo', [])); // => bool(false)

I would prefer, if these other functions would return NULL, though, but
we can't change that for BC reasons.

-- 
Christoph M. Becker

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

Reply via email to