使用PHP将单个列从CSV转换为简单数组
作者:互联网
我有一个csv,它在单列中没有标题的电子邮件列表.
很简单,他们是这样的:
example@123.com
email@somewhere.com
helloworld@email.org
…等等
并且有30k.
我需要使用PHP将电子邮件列表转换为简单数组.
我了解fgetcsv()的概念,但是我们知道它一次读取一行,因此最终得到的是通过遍历csv而不是一个而得到的几个数组.
我需要这个:
Array
(
[0] => example@123.com
[1] => email@somewhere.com
[2] => helloworld@email.org
)
我得到的是:
Array
(
[0] => example@123.com
)
Array
(
[0] => email@somewhere.com
)
Array
(
[0] => helloworld@email.org
)
这是我的代码:
if (($file = fopen("emails.csv", "r")) !== FALSE) {
while (($data = fgetcsv($file)) !== FALSE) {
// do stuff
}
echo '<pre>';
print_r($data);
echo '</pre>';
echo '<br/>';
fclose($file);
}
有没有一种简单的方法,可以使用PHP将整个CSV列简单地转换为数组?我一直在进行研究,但尚未找到解决方案.
解决方法:
如果文件中只有一列,则实际上不需要使用fgetcsv.您可以改用fgets函数(http://us2.php.net/manual/en/function.fgets.php).该函数返回一个字符串,您可以像这样轻松地将其添加到数组中:
$emails = array();
if (($file = fopen("emails.csv", "r")) !== FALSE) {
while (($email = fgets($file)) !== FALSE) {
$emails[] = $email;
}
fclose($file);
}
或者,如果您坚持使用fgetcsv,则可以如下更改代码:
$emails = array();
if (($file = fopen("emails.csv", "r")) !== FALSE) {
while (($arr = fgetcsv($file)) !== FALSE) {
$emails[] = $arr[0];
}
fclose($file);
}
最后,我已经阅读但没有经过自我测试,stream_get_line函数(http://www.php.net/manual/en/function.stream-get-line.php)甚至比fgets更快.您可以在上面替换它.
标签:fgetcsv,csv,arrays,php 来源: https://codeday.me/bug/20191029/1961979.html