2017-04-19 8 views
0

getcsvで列見出しの値を取得したいが、できない。PHPでgetcsvのヘッダー値を取得する方法

例入力:

名前、住所、年齢
ジョン、カリフォルニア州、26
マイケル、LA、29

私はROW2 COLUMN2にいる場合は、私はの名前を取得したいですアドレスです。

<?php 
    echo '<table class="tbl">'; 
    while(($data = fgetcsv($handle, 1000, ",")) !== false) 
    { 
     $col = count($data); 
     $header = $data[0]; //I AM SUPPOSED to get this value but this returns to the current cell and not the column header. 
     echo '<tr>'; 
     for ($c=0; $c < $col; $c++) { 
      $cell = esc_html($data[$c]); 
      $colnum = $c + 1; 
      if($row == 0) 
      {  
       echo "<td style='text-transform:uppercase;'><br><br>". 
         "<b>{$cell}</b></td>"; 
      } 
      else 
      { 
       echo "<td>{$cell} = {$header}</td>"; //{$row} = {$colnum} 
      } 
     } 
     echo '</tr>'; 
     $row++; 
    } 
    echo '</table>'; 

入力し、上記のコードに基づいて、ここで、出力されます:しかし、私のコードでは、これが私のコードであるLA

として返します

名前、住所、年齢
ジョン= John、California = California、26 = 26
Michael = Michael、LA = LA、29 = 29

下図のように私は、各列のヘッダーの値を取得することになっています:

名前、住所、年齢
ジョン=名前、カリフォルニア=住所、26 =年齢
マイケル=名前、LA =住所を、 29 =年齢

+0

あなたはこれらのヘッダ '名前、住所、Age'をしたいですか? –

+0

これはここで答えられているかもしれません。 http://stackoverflow.com/questions/1853094/how-to-get-the-columns-names-along-with-resultset-in-php-mysql –

+0

はい。私は行ごとにこれらのヘッダーを取得したいと思います。私はCSVのヘッダーとデータベースの私のヘッダーを比較したいからです。 – smzapp

答えて

1

もっと良い回答があるかもしれませんが、以下のコードが有効です。

あなたのCSVデータは、以下の方法で返される:

Array ([0] => Name [1] => Address [2] => Age) 
Array ([0] => John [1] => California [2] => 26) 
Array ([0] => Michael [1] => L.A [2] => 29) 

更新回答

<?php 
    $headerValues = array(); 
    $counter = 0; 
    $row = 0; 
    if (($handle = fopen("test.csv", "r")) !== FALSE) { 
     echo '<table class="tbl">'; 
     while(($data = fgetcsv($handle, 1000, ",")) !== false) 
     { 
      // You need to grab the header values on first iteration 
      if ($counter == 0) { 
       // store them in an array 
       $headerValues = $data; 
       // increment counter 
       $counter++;     
      }     

      $col = count($data); 
      echo '<tr>'; 
      for ($c=0; $c < $col; $c++) { 
       // grab column name here 
       $headerName = $headerValues[$c]; 
       $cell = $data[$c]; 
       $colnum = $c + 1; 
       if($row == 0) 
       {      
        echo "<td style='text-transform:uppercase;'><br><br>". 
          "<b>{$headerName}</b></td>"; 
       } 
       else 
       { 
        echo "<td>{$cell} = {$headerName}</td>"; //{$row} = {$colnum} 
       } 
      } 
      echo '</tr>'; 
      $row++; 

     } 

     echo '</table>'; 
    } 
    ?> 
+1

完璧です。あなたはそれを正しく持っています。ありがとう.. – smzapp

関連する問題