2016-10-11 1 views
0

CSV&無視する特定の列を読む:PHPは、私はCSVファイルを読み込み、これから配列を生成する単純なPHPスクリプトを持って

<?php 
$file = fopen('food.csv', 'r'); 
$allfile = []; 
$idsColumnsWanted = array(0,1,16); 
while (($line = fgetcsv($file)) !== FALSE) { 

    $i = 0; 

    foreach ($line as $i => $cell) { 
     if (!in_array($i, $idsColumnsWanted)) { 
      continue; 
     } 
     $allfile[] = $line; 
     $i++; 
    } 

} 
fclose($file); 
?> 

私は、列0にデータだけを表示したいのですが1 & 16.

私は上記の試みを行いましたが、それでもCSV全体を出力します。

+0

表示しようとしている間に、 – Netham

+0

をフィルタすることができます。値の代わりにキーをチェックしたいと思う、 'in_array()'は値をチェックし、 'array_key_exists()'はキーを確認する – Neat

+0

'i'変数を増やします。 –

答えて

1

あなたはarray_intersect_keyでそれを行うことができます。

$file = fopen('food.csv', 'r'); 
$allfile = []; 

$idsColumnsWanted = array_flip([0, 1, 16]); 

while (false !== $fields = fgetcsv($file)) { 
    $allfile[] = array_intersect_key($fields, $idsColumnsWanted); 
} 

fclose($file); 

注:あなたはarray_values(array_intersect_key(...))を使用し、あなたの結果の配列にキーとして列番号を保存したくない場合。

+0

これを実行すると、配列に 'null'アイテムが設定されます。どのように解決するのですか? – michaelmcgurk

+1

@michaelmcgurk:本当に?私はいくつかのテストを行います。 –

+1

@michaelmcgurk: "$ id ** s ** ColumnsWanted"に "s"が見つかりませんでした –

関連する問題