2011-12-12 77 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',你怎么能知道数组的特定索引没有被切片或覆盖在应用程序的其他位置? –