2011-02-10 2 views
1

J'ai un fichier csv qui a un mot pour chaque ligne comme celui-ciobtenir des valeurs nulles lors de la lecture du fichier csv

word1 
word2 
word3 

Et avoir le code suivant pour lire les données:

$arr = array(); 
$fh = fopen('path/to/file', 'r'); 
while (($rows = fgetcsv($fh)) !== false) { 
print_r($rows); 
if (!in_array($rows[0], $arr)) 
    $arr[] = "'".trim($rows[0])."'"; 
} 
fclose($fh); 
print_r($arr); 

Le le problème est que j'obtiens des chaînes vides/null pour $ rows [0] et je suis tout à fait sûr que les données sont là.

Array ([0] =>) 
Array ([0] =>) 
Array ([0] =>) 

Array ([0] => '' [1] => '' [2] => '' [3] => '') 

Toute aide serait grandement appréciée.

+0

version php? Si <5, alors la longueur de la ligne param n'est pas optionnelle (?) – horatio

+0

PHP 5.3.1, donc c'est optionnel;) – madkris24

Répondre

1

Vous essayez de lire les mots dans un tableau? Remplacez tout cela par:

$arr = file('/path/to/file'); 
print_r($arr); 
+0

... et pour supprimer les doublons, utilisez 'array_unique()'. – jeroen

+0

J'ai besoin d'eux pour être qouted unique, une idée en dehors de faire une boucle foreach? ne semble pas avoir une option pour cela – madkris24

+0

Mettre des citations dans le fichier texte. –

1

Impossible de reproduire. Je suppose qu'il y a quelque chose qui ne va pas avec votre format de fichier. Il y a très probablement une ligne vide en haut (ce dont je ne suis pas sûr, mais qui pourrait échouer le test !== false).

Mieux essayer:

$arr = array_map("str_getcsv", file("words.csv")); 
print_r($arr); 

Et si vous devez ajouter à nouveau les guillemets, faire une boucle séparée.

+0

$ fh = fopen ('chemin/vers/fichier', 'rb'); oublié d'ajouter l'option b, mais va essayer votre suggestion – madkris24

1

La partie de lecture de fichier a déjà été répondu, mais au sujet de votre boucle pour ajouter les guillemets, vous pouvez utiliser array_walk():

function add_quotes(&$item) 
{ 
    $item = "'" . $item . "'"; 
} 

array_walk($arr, "add_quotes"); 
+0

beaucoup plus rapide que simplement faire une boucle? – madkris24

+0

@madkris il devrait être comme il est cuit nativement dans php. Vous devez tester pour les chiffres exacts ... – jeroen

Questions connexes