2016-09-23 12 views
-1

次のコードでCSVファイルを開き、結果をJSON形式にエクスポートします。whileループの最後の項目からコンマを削除します

しかし、私は最後の,をwhileループから削除したいと思います。誰かが私の現在のコードでこれをどうやって説明することができますか?

<?php 
ini_set('max_execution_time', 300); 
$wantedColumns = array(3); 
$row = 1; 
if (($handle = fopen("data.csv", "r")) !== FALSE) { 

    echo '{ 
     "data": 
     ['; 

     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     if ($row == 1) { 
      echo '<tr>'; 
     }else{ 
      echo '<tr>'; 
     } 

     for ($c=0; $c < $num; $c++) { 
      if (!in_array($c,$wantedColumns)) continue; 



      if(empty($data[$c])) { 
       $value = "&nbsp;"; 
      }else{ 
       $value = $data[$c]; 
      } 

      if ($row == 1) { 
      }else{ 
       echo ''.$value.','; // comma added here 
      } 
     } 

    if ($row == 1) { 
     echo '</tr>'; 
    }else{ 
     echo '</tr>'; 
    } 

    $row++; 
    //$value= substr($value, 0, -1); 
    } 
      echo ' ] 
       }'; 

    echo '</tbody></table>'; 
echo '</center>'; 
    fclose($handle); 
} 
?> 
+2

'$値= SUBSTR($値、-1、1をそれらを結合するために破を使用);または '$ value = rtrim($ value、 '、');' –

+0

あなたの返事をありがとうJohnさん、ここで '//コンマをここに追加しました? – michaelmcgurk

+4

CSVファイルをJSON文字列に変換しようとしていますか? JSONを手動で構築するのではなく*提案することはできますか?配列を作成してから 'json_encode()'を使うことをお勧めします。 –

答えて

4

このようなことをやったとき、私は配列への値をプッシュすることを好む、その後

$values = array(); 
    for ($c=0; $c < $num; $c++) { 
     if (!in_array($c,$wantedColumns)) continue; 



     if(empty($data[$c])) { 
      $value = "&nbsp;"; 
     }else{ 
      $value = $data[$c]; 
     } 

     if ($row == 1) { 
     }else{ 
      $values[] = $value; 
     } 
    } 

    echo implode(',', $values); 
+0

より良い解決策.. – devpro

+0

@ MajorCaigerありがとう。私はこれを私のソリューションに含めることを試みたが、成功しなかった。私は最後の '、'を削除したいだけです。 – michaelmcgurk

+0

@michaelmcgurk:ポイントはループの値をエコーアウトするのではなく、配列として必要な構造体を作成し、後でそれをエコーアウトすることです。 –

関連する問題