2011-12-12 1 views
0

Je tente d'affecter la chaîne renvoyée par la fonction fgets() à un tableau en PHP. J'ai essayé des chaînes de test et elles fonctionnent bien. J'ai également fait en sorte que fgets() renvoie des articles, mais toujours pas de joie. Pensant que cela peut être un problème de synchronisation, j'ai eu la fonction exécuter onload et cela n'a pas fonctionné. Mon code est ci-dessous; toute aide à ce sujet serait très appréciée.PHP; affectation de la sortie fgets() à un tableau

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

Au lieu de '$ i = $ i + 1;' vous pouvez simplement nous '$ i ++;' –

+0

Pourquoi utilisez-vous 'resultsArray globale $,' non 'retour $ resultsArray; '? – zerkms

+0

'Ne fonctionne pas' explique quelque chose. 'Faites quelque chose '- cela vous aiderait-il à le résoudre? – zerkms

Répondre

3

VEUILLEZ retourner le tableau; n'utilisez pas de globals.

Ce correctif devrait fonctionner:

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

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

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

     return $resultsArray; 
    } 
+0

Merci pour votre aide, mais est-ce le problème fondamental ici? Je ne suis pas sûr que ce soit (voir mon commentaire à zerkms ci-dessus). J'ai fait un peu d'une solution de contournement hacky en utilisant ce code '$ resultsArray [$ i] = substr ($ ligne, 0, 250);' et cela place les premiers 251 caractères dans le tableau. De toute évidence, ce code n'est pas génial et je voudrais aller au fond du problème. Des pensées? Barry – barryedmund

+0

@ user1094389: bien, ce n'est pas possible. Si l'affectation à 'substr ($ line, 0, 250);' alors l'affectation à '$ line' devrait fonctionner soit – zerkms

+0

bien, voici la chose - si vous utilisez le même' $ resultsArray' globalement comment pouvez-vous savoir qu'un l'index spécifique du tableau n'est pas découpé ou écrasé ailleurs dans votre application? –