2011-12-12 79 views
0

我試圖將fgets()函數返回的字符串分配給PHP中的數組。我曾嘗試測試字符串,他們工作正常。我也確定fgets()正在返回物品,但仍然沒有快樂。認爲這可能是一個時間問題,我有功能運行onload,並沒有工作。我的代碼在下面;任何幫助,將不勝感激。PHP;分配fgets()輸出到數組

function createDataArray() 
    { 
     global $resultsArray; 

     $i = 0; 
     $file = fopen("downloads/E0.csv","r"); 

     while(! feof($file)) 
     { 
      $line = fgets($file, 4096); 
      $resultsArray[$i] = $line; //This isn't working. Something is wrong with $line. It is a string, but it doesn't get assigned to the array. 
      $i = $i + 1; 
     } 
     fclose($file); 
    } 
+0

而不是'$ I = $ I + 1;'你可以簡單的美國'$我++;' –

+0

你爲什麼用'全球$ resultsArray;'不'回$ resultsArray;'? – zerkms

+0

'不工作'解釋了一些東西。 「做點什麼」 - 這會幫助你解決問題嗎? – zerkms

回答

3

請返回數組;不要使用全局變量。

此修復程序應該工作:

function createDataArray() 
    { 
     $resultsArray = array(); 

     $file = fopen("downloads/E0.csv","r"); 

     while(! feof($file)) 
     { 
      $line = fgets($file, 4096); 
      $resultsArray[] = $line; 
     } 
     fclose($file); 

     return $resultsArray; 
    } 
+0

謝謝你的幫助,但這是根本問題嗎?我不確定它是什麼(看到我對上面的zerkms的評論)。我使用這個代碼'$ resultsArray [$ i] = substr($ line,0,250);'來完成一些冒險的解決方法;'這將前251個字符放入數組中。很明顯,這不是很好的代碼,我希望能夠深入到問題的底部。有什麼想法嗎? Barry – barryedmund

+0

@ user1094389:好吧,那是不可能的。如果賦值給'substr($ line,0,250);'然後賦值給'$ line'應該可以工作 – zerkms

+0

,這是事情 - 如果你在全局使用相同的'$ resultsArray',你怎麼能知道數組的特定索引沒有被切片或覆蓋在應用程序的其他位置? –