2016-05-03 11 views
2

HTML

<form action="upload.php" method="post" enctype="multipart/form-data"> 
<input type="file" name="csv" value="" /> 
<input type="submit" name="submit" value="Save" /></form> 
</form> 

。とecho json_encode($ csv)です。私は値を得るのが難しいです。私が試したことは、私にnullを与えることでした。

<?php 
$csv = array(); 

// check there are no errors 
if($_FILES['csv']['error'] == 0){ 
    $name = $_FILES['csv']['name']; 
    $ext = strtolower(end(explode('.', $_FILES['csv']['name']))); 
    $type = $_FILES['csv']['type']; 
    $tmpName = $_FILES['csv']['tmp_name']; 

    // check the file is a csv 
    if($ext === 'csv'){ 
     if(($handle = fopen($tmpName, 'r')) !== FALSE) { 
      // necessary if a large csv file 
      set_time_limit(0); 


      while(($data = fgetcsv($handle, 10000, ',')) !== FALSE) { 
       // number of fields in the csv 
       $col_count = count($data); 

       // get the values from the csv 


      } 
array_walk($csv, function(&$a) use ($csv) { 
    $a = array_combine($csv[0], $a); 
}); 
array_shift($csv); # remove column header 
header('Content-Type: application/json'); 
echo json_encode($csv); //display array 
      fclose($handle); 
     } 
    } 
} 

?> 

サンプルCSV

LastName,FirstName,MAT251-Calc-I ,MAT252-Calc-II,MAT320-DiscreteMath,CPS210-CompSci-I,CPS310-CompSci-II,CPS315-CompSci-III,CPS352-OOP,CPS330-Assembly.Arch.,CPS353-SoftEng,CPS415-Disc.Cont.Algorithms,CPS340-Op.Sys,CPS425-Lang.Processing,CPS493-Elect-1,CPS493-Projects,EGC230-Dig.Logic,EGC208-Dig.Logic.Lab,SCIENCE-I,SCIENCE-II 
Rocha, Cara I.,A,A,A,C-,,,,,,,,,,,,,, 
Hamilton, Mufutau N.,B,B,B,A-,,,,,,,,,,,,,, 
Castro, Chiquita A.,B,B,C ,C ,,,,,,,,,,,,,, 
Juarez, Edward Y.,C+,B,B,C,A,C+,B,B,C,A,C+,B,B,C,A,C+,A,B 
Erickson, Norman H.,C-,B-,C+,B,B,B,,C-,B,,,,,,,B,, 
Downs, Moana C.,A,C+,B,C-,A,C-,,A-,B+,,,,,,,,, 

答えて

2

あなたは代わりにこれを試して、その多くのコードを必要としません:Handling file uploadsで指示されたとおり

はその後、アップロードされたファイルを保存します。

$file="sample.csv"; 
$csv= file_get_contents($file); 
$array = array_map("str_getcsv", explode("\n", $csv)); 
$json = json_encode($array); 
header('Content-Type: application/json'); 
print_r($json); 


機能:

file_get_contents()

この関数は除いて)(ファイルに類似していること MAXLENバイトまで指定されたオフセットで始まる文字列でファイルを返し のfile_get_contents() 。失敗した場合、file_get_contents()はFALSEを返します。

array_map()

それぞれに コールバック関数を適用した後、配列1のすべての要素を含む配列を返します。 コールバック関数が受け付けるパラメータの数は、array_mapを()

str_getcsv()

CSV形式のフィールドの文字列の入力を解析し に渡される配列の数と一致し、配列を返すべきである 読み取られたフィールドを含む。

json_encode()

値のJSON表現を含む文字列を返します。

+0

私はそれを試してみましたが、私はまだ[[ヌル]] –

+0

'のerror_reporting(E_ALL)を追加することで、あなたのPHPコードにエラーレポートを有効に取得しています。 ini_set( 'display_errors'、 '1'); 'スクリプトの先頭には何が返されますか? –

+0

私がしようとしているのは、csvファイルをアップロードすることです。これは、サンプルcsvと同じ構造を持つ任意のcsvファイルです。 –

関連する問題