我在Excel中有一个巨大的列表,它们只是两列
name type
目前正在阅读该文件:
$lines = array_map('str_getcsv', file('file.csv', FILE_IGNORE_NEW_LINES));
print_r($lines);
返回:
name1;type
name2;type2
...
Array ( [0] => Array ( [0] => name1;type1) [1] => Array ( [0] => name2;type2)...
我想在foreach中访问单独的名称和类型
我该怎么做? 感谢
答案 0 :(得分:2)
str_getcsv默认分隔符为','因此您需要以某种方式调用它,并明确指定';'作为分隔符
例如像这样
$myGetCsv = function ($str) {
return str_getcsv($str, ';');
};
$lines = array_map($myGetCsv, file('file.csv', FILE_IGNORE_NEW_LINES));
答案 1 :(得分:0)
使用此代码进行CSV文件读取。它易于使用并了解其工作原理。
if (($handle = fopen('./suppression_invalid_emails.csv', "r")) !== false) {
//getting column name
$column_headers = fgetcsv($handle);
foreach ($column_headers as $header) {
//column as array;
$result[$header] = array();
}
// get data for column;
while (($data = fgetcsv($handle)) !== false) {
$i = 0;
foreach ($result as &$column) {
$column[] = $data[$i++];
}
}
fclose($handle);
echo '<pre>'; print_r($result); echo '</pre>';
}
我使用两个基本功能,第一个是fopen用于读取文件,另一个用fgetcsv用于获取列数据。
结果是:
Array
(
[reason] => Array
(
[0] => Mail domain mentioned in email address is unknown
[1] => Known bad domain
[2] => Known bad domain
)
[email] => Array
(
[0] => muneque@collegeclub.om
[1] => saharfa2000@hatmail.com
[2] => tawheeda81@yahoo.co
)
[created] => Array
(
[0] => 1502644294
[1] => 1502480171
[2] => 1502344320
)
)