2014-02-22 69 views
0

我想聲明SplFixedArray();以節省內存消耗。但它是致命的錯誤。php multidimensional SplFixedArray聲明是致命錯誤

$items=new SplFixedArray(); 
echo "Array Started..."; 
    for($h=0;$h<5000;$h++) 
    { 
     for($i=0;$i<24;$i++) 
     { 
      $items[$h][$i]=$objSheet->getCellByColumnAndRow($i,$h+1)->getValue(); 
     } 
    } 

同樣是工作,如果不申報new SplFixedArray();

錯誤:

Fatal error: Uncaught exception 'RuntimeException' with message 'Index invalid or out of range' in /home/twa/files.php:168 Stack trace: #0 /home/twa/files.php(168): unknown() #1 {main} thrown in /home/twa/files.php on line 168

$items=new SplFixedArray(SplFixedArray());也是失敗的......

請讓我知道正確的語法.. 。

+1

您未指定大小'new SplFixedArray();'$ h'和'$ i'的值是多少? – cornelb

+0

@cornelb:h = 5000&i = 30;相應修改的問題 – logan

+0

您是否也可以粘貼循環代碼? – cornelb

回答

2
$items = new SplFixedArray(5000); 
for ($h=0; $h<5000; $h++) { 
    $items[$h] = new SplFixedArray(24); 
    for ($i=0; $i<24; $i++) { 
     $items[$h][$i] = $objSheet->getCellByColumnAndRow($i,$h+1)->getValue(); 
    } 
} 
+0

h = 720後,它表示'致命錯誤:未捕獲異常'RuntimeException',並在/home/twa/files.php:166堆棧跟蹤:#0/home/twa/files中顯示消息'Index invalid or out of range' .php(166):unknown()#1 {main}拋出166行上的/home/twa/files.php – logan

+0

用'$ items [$ h] [$ i] = rand(0,3000) )'的作品。你從$ objSheet-> getCellByColumnAndRow($ i,$ h + 1) - > getValue()'得到什麼樣的值? – cornelb

+0

其字符串。是否有可能在每500次迭代後清除陣列內存,這樣我就不會面對內存問題 – logan

相關問題