Hi internals,
I’ve proposed a small RFC to add is_assoc_array(array $array): bool to
the PHP core.
RFC: https://wiki.php.net/rfc/is_assoc_array
The function detects associative arrays using internal storage
(HT_IS_PACKED).
Similar helpers exist in frameworks, and a native version would be faster
and more consistent.
No BC breaks. No impact on SAPIs or OPcache.
Feedback welcome.
Thanks,
Muhammed Arshid
Hey,
Hi internals,
I’ve proposed a small RFC to add |is_assoc_array(array $array):
bool| to the PHP core.RFC: https://wiki.php.net/rfc/is_assoc_array
The function detects associative arrays using internal storage
(|HT_IS_PACKED|).Similar helpers exist in frameworks, and a native version would be
faster and more consistent.No BC breaks. No impact on SAPIs or OPcache.
Feedback welcome.
Thanks,
Muhammed Arshid
What's the difference between the negation of array_is_list() and
is_assoc_array()?
Bob
The fact that this RFC doesn't even mention PHP's already available native
function (array_is_list() - which performs the inverse) indicates that this
initiative is under-researched.
This is the second email of this type frim you in a short period. Please be
mindful that a lot of people are subscribed to this mailing list.
Suggesting low-value RFCs actually strains human resources and impedes
progress.
If you want to create wrapper functions with names that you personally
prefer, please create your own library and share that with the public.
Please only submit RFCs for discussion after performing loads of research
to ensure that what you want to suggest is actually worth suggesting.
Mick
Hi internals,
I’ve proposed a small RFC to add is_assoc_array(array $array): bool to
the PHP core.RFC: https://wiki.php.net/rfc/is_assoc_array
The function detects associative arrays using internal storage
(HT_IS_PACKED).Similar helpers exist in frameworks, and a native version would be faster
and more consistent.No BC breaks. No impact on SAPIs or OPcache.
Feedback welcome.
Thanks,
Muhammed Arshid
Your implementation is pretty much the inverse of
zend_array_is_list(),^1 so you could probably simplify it with the
following (note the negation operator (!) in front of
zend_array_is_list(array).
PHP_FUNCTION(is_assoc_array)
{
HashTable *array;
ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_ARRAY_HT(array)
ZEND_PARSE_PARAMETERS_END();
RETURN_BOOL(!zend_array_is_list(array));
}
For the sake of consistency, I would change the name of the function to
array_is_assoc().
Cheers,
Ben