Whenever you look for more information about the maximum size of an array,
you find someone saying that "PHP arrays do not have a maximum size, but
the amount of memory available". However, I could not find any excerpt in
PHP documentation that supports that.

Even if the engine imposes no hard limit on the size of an array, in fact,
there an inherent limit that is assumed by some functions, and that is what
I would like to suggest making explicit on the documentation. The lack of
this definition leads to inconsistencies and leaves several open questions,
including:

   - If no limit exists, then it's conceptually possible to have an array
   with *PHP_INT_MAX + 1* elements. In that sense, what would be the return
   of the *\count()*?
   - The function *range* validates the size of the resulting range against
   the maximum size of the hash table (defined internally as *HT_MAX_SIZE*),
   and throw an error if it exceeds that value. Is that the limit?
   - he function *array_fill*, in contrast, does not rely on *HT_MAX_SIZE*
   for validating the size of the result. But, why?
   - The documentation says that omitting the third parameter of
   array_split is equivalent to \count($array). If the maximum number
   representable in PHP is *PHP_INT_MAX*, is the max size the same as
   *PHP_INT_MAX*?

There are other examples, but I think these are enough to make the point.

My understanding is that the conceptual limit is *PHP_INT_MAX*, as there is
no way to represent the size above this value. If so, the interval that
represents all possibles indexes for an array is defined as *0 <= index <=
PHP_INT_MAX -1*. That definition aligns with all functions that support
negative length as *-PHP_INT_MAX* is equivalent to the start of the array.

Could you guys please share your thoughts on this topic?

Reply via email to