2016-10-17 16 views
0

でCSV列の値を組み合わせる:私は5行のcsvファイル持っているPHP

id | price| name | sku | qty 
1 | 22 | widget0 | abcd | 1 
2 | 21 | widget1 | efgh | 1 
3 | 10 | widget0 | abcd | 2 
4 | 44 | widget1 | efgh | 1 
5 | 22 | widget4 | mnop | 1 


などを... 最初の3列は視覚的な目的のためだけにここにいると私はするために必要なもののために使用されていません達成する。 私がする必要があるのは、ファイル内のskuとqtyのデータを読み込んで結果を出力することです。 私は同じskusの数を数え、skuごとの総数を得なければなりません。

上記の例に基づいて、私は必要があります。次のコードで

sku | qty 
abcd | 3 
efgh | 2 
ijkl | 1 
mnop | 1 

を、私は、ファイル内の同じのSKUの合計数を取得することができます:

$file = ('my.csv'); 
$fh = fopen($file, 'rb'); 
$tag = array(); 
$qty = array(); 
$row=1; 
while($col = fgetcsv($fh)) { 
if($row == 1){ $row++; continue; } //skip 1st row 
$num = count($fh); 
if (isset($tag[$col[3]])) { 
$tag[$col[3]]++; 
} 
else { 
$tag[$col[3]] = 1; 
} 
} 
print_r($tag); 


それは私を与えます:

sku | qty 
abcd | 2 
efgh | 2 
ijkl | 1 
mnop | 1 



これは正しくありません。 qty列の値を取得し、それをcsvファイルのskus値の合計数に関連付ける方法がわかりません。
ご意見はありますか?

答えて

0

ソリューションのためのコードの下使用

$file = ('my.csv'); 
$fh = fopen($file, 'rb'); 
$tag = array(); 
$qty = array(); 
$row=1; 
while($col = fgetcsv($fh)) { 
if($row == 1){ $row++; continue; } //skip 1st row 
$num = count($fh); 
if (isset($tag[$col[3]])) { 
//$tag[$col[3]]++; 
$tag[$col[3]] = (int)$tag[$col[3]] + (int)$col[4]; // where $col[4] = qty with forcing to `int` value 
} 
else { 
$tag[$col[3]] = $col[4]; 
} 
} 
print_r($tag); 

このソリューションを試してみてください!

+0

Awsome Albertは、魅力的な作品です! – steph

+0

WC。他のユーザーのために使用されるので、同じことがありますので、答えをupvoteして受け入れてください。 :) –

0

あなたは数量のSUMだけではなく、これが役立つ1

希望に増やすようにする必要があり

$file = ('my.csv'); 
$fh = fopen($file, 'rb'); 
$tag = array(); 
$qty = array(); 
$row=1; 

//skip first row 
fgetcsv($fh, 10000, ","); 

while($col = fgetcsv($fh,10000)) { 

$num = count($fh); 
if (isset($tag[$col[3]])) { 
$tag[$col[3]]++; 
} 
else { 
$tag[$col[3]] = 1; 
} 
} 
print_r($tag); 
+0

こんにちは、ありがとうございますが、これは何も変わりません... – steph

関連する問題