假设我有以下名为mycsv.csv的
的csv文件 "Date" "order 1" "order 2" "order 3" "total cost"
01/04/2006 4 tires 1 oil 6 sparks plugs "434.00$'
03/08/2006 3 tires 2 oil 2 sparks plugs "234.00$'
03/12/2006 2 tires 0 oil 1 sparks plugs "134.00$'
我想知道如何将这些数据存储在二维数组中,我们将非常感谢您的帮助!
答案 0 :(得分:4)
您可以使用fgetcsv
(请参阅:http://php.net/manual/en/function.fgetcsv.php)。与str_getcsv
的区别在于它需要File resource
作为参数,而不是String
。
您也可以将每一行存储在另一个阵列中以拥有2D阵列,例如(调整手册页示例)
$twoDarray = array();
if (($handle = fopen("mycsv.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$twoDarray[] = $data;
}
fclose($handle);
}
答案 1 :(得分:1)
使用str_getcsv
功能:http://php.net/str_getcsv
$result = array();
$keys = array('Date', 'order 1', 'order 2', 'order 3', 'total cost');
foreach (file('mycsv.csv') as $key => $str)
{
if ($key == 0)
continue; // skip first line
$values = str_getcsv($str, "\t", '', '');
$result[] = array_combine($keys, $values);
}
print_r($result);
答案 2 :(得分:1)
通常,我使用str_getcsv() PHP本机函数来解析CSV数据。
答案 3 :(得分:1)
另一种快速方法:
$data = array_map(function($line) {
return str_getcsv($line, ',');
}, file('data.csv', FILE_IGNORE_NEW_LINES));
答案 4 :(得分:0)
将此归档的最简单方法是使用fgetcsv
- 函数。
示例(摘自manual page并略有改动):
if (($handle = fopen("mycsv.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
}
答案 5 :(得分:0)
As mentioned on comment from PHP documentation
$csv = array_map('str_getcsv', file('data.csv'));