Convertir CSV JSON à l'aide de PHP
Je suis en train d'essayer de convertir le fichier CSV JSON à l'aide de PHP.
Voici mon code
<?php
date_default_timezone_set('UTC');
$today = date("n_j"); //Today is 1/23/2015 -> $today = 1_23
$file_name = $today.'.CSV'; //My file name is 1_23.csv
$file_path = 'C:\\Users\\bheng\\Desktop\\qb\\'.$file_name;
$file_handle = fopen($file_path, "r");
$result = array();
if ($file_handle !== FALSE) {
$column_headers = fgetcsv($file_handle);
foreach($column_headers as $header) {
$result[$header] = array();
}
while (($data = fgetcsv($file_handle)) !== FALSE) {
$i = 0;
foreach($result as &$column) {
$column[] = $data[$i++];
}
}
fclose($file_handle);
}
//print_r($result); //I see all data(s) except the header
$json = json_encode($result);
echo $json;
?>
print_r($result);
//Je vois toutes les données(s)
Puis je json_encode($result);
et a essayé de l'afficher, mais rien ne s'affiche à l'écran. Je ne vois que le vide de l'écran, et de 0 message d'erreur.
Je fais quelque chose de mal ? Quelqu'un peut-il m'aider ?
Ajouté Résultat de
print_r($result);
Array (
[Inventory] => Array (
[0] => bs-0468R(20ug)
[1] => bs-1338R(1ml)
[2] => bs-1557G(no bsa)
[3] => bs-3295R(no BSA)
[4] => bs-0730R-Cy5"
[5] => bs-3889R-PE-Cy7"
[6] => 11033R
[7] => 1554R-A647
[8] => 4667
[9] => ABIN731018
[10] => Anti-DBNL protein
.... more ....
Veuillez envoyer la Sortie si votre
- Donnez-moi un 1 mn
Je vous donne 2min 😀
ahahah
Je l'ai posté dans mon post comme vous l'avez suggéré !
print_r($result);
- Donnez-moi un 1 mn
Je vous donne 2min 😀
ahahah
Je l'ai posté dans mon post comme vous l'avez suggéré !
OriginalL'auteur iori | 2015-01-23
Vous devez vous connecter pour publier un commentaire.
Essayer comme ceci:
str_getcsv
? Wow - vous convertir le tout en seulement 5 lignes de code. Impressionnant !fonction str_getcsv analyser un fichier CSV chaîne dans un tableau. php.net/str_getcsv
Et array_map applique la fonction de rappel pour les éléments des tableaux php.net/manual/en/function.array-map.php
Nice. Rien de mal avec votre code, mais quand je fais
print_r($json);
- rien n'est de l'impression sur l'écran. U ne sais quelle est la cause de cela ?Une version personnalisée pour les mappages d'objet :
php $dataFolder = realpath(dirname(__FILE__)); //echo $dataFolder; $file="$dataFolder/MonwooEcoleDeLaVie_Expressions-Expressions.csv"; $csv= file_get_contents($file); $csvLines = explode("\n", $csv); $indexes = str_getcsv(array_shift($csvLines)); $array = array_map(function ($e) use ($indexes) { return array_combine($indexes, str_getcsv($e)); }, $csvLines); $json = json_encode($array); print_r($json);
OriginalL'auteur Whirlwind
Vous pouvez essayer de cette façon.
OriginalL'auteur Renjith VR
J'ai rencontré un problème similaire, j'ai fini à l'aide de cette récursive de convertir les données en UTF-8 sur un tableau avant de les encoder en JSON.
À partir de:
http://nazcalabs.com/blog/convert-php-array-to-utf8-recursively/
OriginalL'auteur Samwise
Si vous êtes à la conversion d'une dynamique de fichier CSV, vous pouvez passer l'URL par le biais d'un paramètre (
url=http://example.com/some.csv
) et il va vous montrer les plus up-to-date de la version:OriginalL'auteur Ethan Jinks O'Sullivan
de données.csv
Jeu,Les Compétences
Chasseur de trésor,pilipala
Le lance-roquettes,bibobibo
Moteur-fusée,hehehohoho
À convertir avec le nom de la colonne, c'est comment je le fais.
csv2json.php
Le résultat de sortie
OriginalL'auteur Kevin Khew
Solution alternative qui utilise la même méthode que @Tourbillon de la solution, mais renvoie à une norme plus résultat JSON (avec des champs nommés pour chaque objet/enregistrement):
OriginalL'auteur Ian Miller
Vous pouvez vérifier pour voir si il y avait une erreur lors de l'encodage JSON à l'aide de json_last_error(). Pourriez-vous s'il vous plaît essayer cette première?
5
5 = JSON_ERROR_UTF8 Cela signifie qu'il y a une erreur dans l'encodage de votre entrée. Essayez d'utiliser utf8_enocde() sur la chaîne de données avant de l'ajouter au tableau.
U ne sais comment le résoudre ?
Changer le type de contenu de l'en-tête seulement affecte le rendement étant interprété par le navigateur. Dans cette situation, le montant de matrice de résultats contient mal formé de chaînes comme un résultat de la CSV d'entrée.
l'exécution de utf8_encode() sur votre entrée avant de l'ajouter à $résultat devrait faire l'affaire.
OriginalL'auteur SArnab