0

require : 1 line in CSV export 1 file JSON を使用して、CSV ファイルの行を JSON ファイルにエクスポートしたい。ファイルのエクスポートには成功しましたが、エクスポートしたい行をフィルタリングできません。誰でも私を助けることができますか?

 <?php

header('Content-type: application/json');

$feed = 'jsondata_palpad.csv';

$keys = array();
$newArray = array();

function csvToArray($file, $delimiter) { 
  if (($handle = fopen($file, 'r')) !== FALSE) { 
    $i = 0; 
    while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { 
      for ($j = 0; $j < count($lineArray); $j++) { 
        $arr[$i][$j] = $lineArray[$j]; 
      } 
      $i++; 
    } 
    fclose($handle); 
  } 
  return $arr; 
} 

$data = csvToArray($feed, ',');

$count = count($data) - 1;
$labels = array_shift($data);  


foreach ($labels as $label) {
  $keys[] = $label;
}


$keys[] = 'id';
for ($i = 0; $i < $count; $i++) {
  $data[$i][] = $i;
}


for ($j = 0; $j < $count; $j++) {
 $d = array_combine($keys, $data[$j]);
  $newArray[$j] = $d;
}

//Xuat file JSON
for ($i = 0; $i < 5; $i++) {
    $json = json_encode($newArray[$i]);
    echo $json . "<br />\n";    
    $filename = $data[$i][1] . ".json";
    echo $filename . "<br />\n";
    //echo "title[" . $data[$i][4] . "]";
    $handle = fopen("./" . $filename, "w");
    fwrite($handle, $json);
    fclose($handle);    
}

?>

recommend = 2 の場合、id = 2 の行をエクスポートします。id,product_id,title,outline を JSON ファイルにエクスポートしたい.これはサンプルの JSON ファイルです: http://img839.imageshack.us/img839/5277/21527799.png これは CSV ファイルです: http://img690.imageshack .us/img690/1526/43004273.png

4

1 に答える 1

0

csv ファイルの 6 行すべてをループして、JSON ファイルに保存しています。

for ($i = 0; $i < 5; $i++) {
    ...
}

必要な行番号がわかっている場合は、すべての行をループするのではなく、その行のループ内でコードを呼び出すだけです。たとえば、2 行目が必要な場合:

$row_we_want = 1;
$json = json_encode($newArray[$row_we_want]); 
$filename = $data[$row_we_want][1] . ".json";
$handle = fopen("./" . $filename, "w");
fwrite($handle, $json);
fclose($handle);  

それがどの行であるか不明で、それぞれを確認する必要がある場合は、ループ内で行うことができます。

for ($i = 0; $i < 5; $i++) {
    if (some_condition) {
         $json = json_encode($newArray[$i]); 
        $filename = $i][1] . ".json";
        $handle = fopen("./" . $filename, "w");
        fwrite($handle, $json);
        fclose($handle); 
    }
}

countまた、常に固定長ではない場合は、関数を使用してループ内の 5 を配列の長さに置き換える価値があるかもしれません。

于 2012-11-08T08:17:21.260 に答える