Home » Php » PHP: do arrays have a maximum size?

PHP: do arrays have a maximum size?

Posted by: admin November 30, 2017 Leave a comment

Questions:

Is there a limit for an array in PHP?

Answers:

Yes, there’s a limit on the maximum number of elements. The hash table structure (arrays are basically wrappers around a hash table) is defined like this (PHP 5.3):

typedef struct _hashtable {
    uint nTableSize;
    uint nTableMask;
    uint nNumOfElements;
    ulong nNextFreeElement;
    Bucket *pInternalPointer;   /* Used for element traversal */
    Bucket *pListHead;
    Bucket *pListTail;
    Bucket **arBuckets;
    dtor_func_t pDestructor;
    zend_bool persistent;
    unsigned char nApplyCount;
    zend_bool bApplyProtection;
#if ZEND_DEBUG
    int inconsistent;
#endif
} HashTable;

given that

typedef unsigned int uint;

the limit is the maximum size of an unsigned int (typically 2^32-1 on a 32-bit OS and on most 64-bit OS).

In practice, however, except on machines with lots of RAM and 32-bit ints, you will always hit the memory limit before this becomes an issue.

Questions:
Answers:

The only thing I’ve come across in reference to php is this from bytes.com/forum:

I don’t think there is a limit on how big an array can be, but there is a limit on how much memory your script can use.

The ‘memory_limit’ directive in the php.ini configuration file holds the max amount of memory your scripts can consume. Try changing this, see if that helps.

Questions:
Answers:

Array size depends on server memory and php.ini configuration

ini_set('memory_limit', 'XXXM');

But there is no limit on how many records an array can have. Only huge array size can result you “Out of memory”.