2017-11-18 11 views
0

csvの「作成」列にあるすべてのユニークな項目を収集しようとしています。基本的には、そのすべてが牽引車のリストになります。 CSVには「Make」フィールドがあります。PHP CSV列内の一意のデータを見つける

私は、次の解決策を試みている:私は$ csvArrayを作成して移入されていることがわかります(それが何千ものアイテムを収集)が、私は$ uniqueMakesのカウントをエコーし​​ようとしたとき、私は0を得る

$towFileString = file_get_contents("the link would go here"); 
file_put_contents('tow-data.csv', $towFileString); 

$csvArray = array_map('str_getcsv', file('tow-data.csv')); 

//echo count($csvArray); 

$allMakes = array_column($csvArray, 'Make'); 
$uniqueMakes = array_unique($allMakes); 

echo count($uniqueMakes); 

を。

ここで私はどこに迷いましたか?

+0

http://php.net/manual/en/function.error-reporting.phpそれが何を返すのでしょうか? –

+0

'str_getcsv'は列名を配列インデックスにどのように関連づけますか? – Progrock

答えて

0
<?php 

$csv =<<<CSV 
manufacturer,model 
ford,escort 
delorean,dmc-12 
ford,capri 
vw,beetle 
CSV; 

$csv  = array_map('str_getcsv', explode("\n",$csv)); 
$headers = array_shift($csv); 

$manufacturer_idx = array_search('manufacturer', $headers); 
$manufacturers = []; 
foreach($csv as $v) { 
    $manufacturers[] = $v[$manufacturer_idx]; 
} 

$manufacturers = array_unique($manufacturers); 
sort($manufacturers); 
var_export($manufacturers); 

出力:

array (
0 => 'delorean', 
1 => 'ford', 
2 => 'vw', 
) 
+0

ありがとうございます。私が使用しているCSVはあなたの例よりはるかに複雑で、それが私が抱えている問題です。私が見つけることができるすべての例は比較的単純で、私はそれらから外挿するのが難しいです。コンマ区切りのリストだけではありません。最初の行は、 'Make'、 'Model'、 'License'などのヘッダーで構成されています。特定のヘッダーの下にあるすべてのデータを選択して、重複を排除する必要があります。 –

+0

@DeweyBanks私は私の例にヘッダーの最初の行を追加しました。正しい関連する列/インデックスを見つけるのは単なるケースです。 – Progrock

関連する問題