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


Is there a limit for an array in PHP?


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;
    int inconsistent;
} 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.


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.


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”.