2016-04-25 7 views
5

मैं PHP के साथ सरणी बनाने की कोशिश करता हूं। सरणी का आयाम 26000 x 26000 है। क्या यह बड़ा सरणी बनाना संभव है? मैं पहले से ही आयाम 10000 x 10000 लेकिन कार्यक्रम के साथ एक सरणी बनाने की कोशिश मुझे इस कह रही रखना:PHP का उपयोग करके बड़ी सरणी (26000 x 26000) कैसे बनाएं?

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

मेरे पास है 8GB राम, मैं पहले से ही साथ -1 (अपाचे विन्यास) php.ini में memory_limit निर्धारित किया है। कोड का निर्माण के लिए सरणी यह ​​है:

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); 

मैं भी पहले से ही SplFixedArray उपयोग करने का प्रयास है, लेकिन परिणाम एक ही है। कृपया मेरी मदद करें, धन्यवाद! :)

+5

मुझे आश्चर्य है कि क्या आपके उपयोग के मामले में इस तरह के बड़े सरणियों के लिए है। क्या यह संभव है, हां, हालांकि मुझे उम्मीद है कि आपको लंबे समय से पहले अधिक स्मृति की आवश्यकता होगी, लेकिन यह आवश्यक है। –

+2

यदि आप सीधे संख्यात्मक अनुक्रमण का उपयोग कर रहे हैं, और आप अपने सरणी के आयामों को पहले से जानते हैं; क्यों नहीं [SPLFixedArray] (http://nl3.php.net/manual/en/class.splfixedarray.php) पर विचार करें –

+7

मैंने 100,100 से 600, 600 तक परीक्षण किया: स्मृति उपयोग/सरणीकरण ≈ 200 बाइट्स ताकि आपके मामले में यह होगा 25000 * 25000 * 200 बाइट्स की आवश्यकता है ≈ 100 जीबी –

उत्तर

-1

आप कोड के इस टुकड़े का उपयोग कर सकते भी

$mon = range(1, 26000); 
    for($i=0;$i<=25999;$i++){ 
     $mon[$i] = range(1, 26000); 
    } 
संबंधित मुद्दे