2016-04-25 29 views
5

PHP ile dizi yapmayı deniyorum. Dizinin boyutu 26000 x 26000'dir. Bu büyük bir dizi yapmak mümkün mü? Zaten boyutta 10000 x 10000 fakat program ile bir dizi yapmayı deneyin bana bu söyleyip duruyorum:PHP kullanarak büyük dizi (26000 x 26000) nasıl yapılır?

Fatal error: Out of memory (allocated 1886388224) (tried to allocate 24 bytes) in C:\xampp\htdocs\matrix\index.php on line 24

i 8 GB RAM, ben zaten sahip -1 (apache yapılandırmasında) php.ini içinde memory_limit set var. kod derlemesi için dizi şudur:

function zeros($rowCount, $colCount) 
{ 
    $matrix = array(); 
    for ($rowIndx=0; $rowIndx<$rowCount; $rowIndx++) 
    { 
     $matrix[] = array(); 
     for($colIndx=0; $colIndx<$colCount; $colIndx++) 
     { 
      $matrix[$rowIndx][$colIndx]=0; 
     } 
     var_dump(memory_get_usage()); 
    } 
    return $matrix; 
} 

$matrix = zeros(25000,25000); 

Ben de zaten SplFixedArray kullanmayı deneyin, ancak sonuç aynıdır. Lütfen yardım edin, teşekkürler! :)

+5

ben Kullanım durumunuz böyle büyük diziler için ne olduğunu merak zorunda kod parçasını kullanabilir. Mümkün mü, evet, daha uzun süre önce daha fazla belleğe ihtiyacınız olacağını tahmin etsem de gerekli. –

+2

Düz sayısal indeksleme kullanıyorsanız ve dizinizin boyutlarını önceden biliyorsunuz; Neden [SPLFixedArray] (http://nl3.php.net/manual/en/class.splfixedarray.php) yerine, http://nl3.php.net/manual/en/class.splfixedarray.php) yerine –

+7

100.100'den 600'e 600, 600: memoryUsage/arrayElements ≈ 200 Byte'dan test ettim. 25000 * 25000 * 200 Byte ≈ 100GB –

cevap

-1

Sen de

$mon = range(1, 26000); 
    for($i=0;$i<=25999;$i++){ 
     $mon[$i] = range(1, 26000); 
    }