2016-07-24 80 views
0

我真的很努力地研究如何将csv文件中的某些数据列转换为数组。目前我可以将整个事物转换为一个阵列使用:PHP - 从csv文件中获取某些列到数组中

$csv = array(); 

$lines = file('../data/StaffData.csv', FILE_IGNORE_NEW_LINES); 

foreach ($lines as $key => $value) 
{ 
    $csv[$key] = str_getcsv($value); 
} 

但有没有办法只从数组中获得某些列?如第1列和第2列,还是第1至第4列?等等。

目标是做到这一点,所以我可以把某些数据放到FPDF表中。我也在努力:/

- 如果有人知道如何快速把FPDF好看的表让我知道请。我试图从网站使用BasicTable函数,但是我的表离开了页面,看起来不太好。这是我第一次使用它,而且非常糟糕。

我知道这是2种问题。但是第一个(标题中)是最主要的一个。 谢谢

回答

1

str_getcsv()解析单个行,而您只需从行中提取数据。

$csv = array(); 

$lines = file('../data/StaffData.csv', FILE_IGNORE_NEW_LINES); 

foreach ($lines as $key => $value) 
{ 
    $row = str_getcsv($value); 
    $csv[$key] = array($row[0], $row[1], ..., $row[n]); 
} 

,您可以指定在array($row[0], $row[1], ..., $row[n]);

1

您可以在每一行上使用explode()来获取数组中的列。然后当你写信给$ csv时,只要选择你想要的就可以跳过你不想要的。

for{ 
    $row = explode(",", $line); 
    $csv[$key]['wantedcol1'] = $row[0]; //first col 
    $csv[$key]['wantedcol2'] = $row[2]; //third col 
} 

这只是一个简单的小例子,它在写入$ csv时跳过文件的第二列。

+0

感谢您的答复迈克尔想要的列数。对不起我的不高兴,但我不知道你的意思完全是什么?你有一个例子吗?或者可以指点我一个例子? 谢谢 –

+0

挖掘explode()的文档,...你会很好地使用它,它非常简单。它要求一个分隔符和一个字符串。在你的情况下,把每行/每行,并使用逗号作为分隔符。它会将该字符串转换为数组。使用print_r()来查看爆炸()正在输出什么。你可以从数组中选择你想要的列。把你的手弄脏,你会没事的。 – MichaelClark

+0

我以前用过多次爆炸,只是没有这样的情况。也许我有点困惑?我可以创建数组,我只想知道如何从该数组中选择列。 对于它在我的表生成器中工作,它需要是那些特定的列,而不是别的。我知道我可以打印完整阵列中的某些列,这是你的意思吗? 这是多维的,并使用索引的一切。我希望我有道理?我想我只是在思考你的建议算法时遇到麻烦?谢谢, –