PHP选项卡将文本文件分隔为数组

时间:2013-10-18 14:46:07

标签: php fgetcsv

我有一个巨大的文本文件结构如下:

email 1
email 14
email 1
email 244
email 232
email 23
email 1

我正在尝试将文本文件拉入数组,然后我可以删除所有没有第一个的电子邮件。现在我限制在前20个,所有这些都有数字1,但我在我的数组中唯一得到的是数字1.当我吐出行中的项目数量时,它说1。

$file = "list.txt";// Your Temp Uploaded file
$cols = array();
ini_set('auto_detect_line_endings', true);

$fh = fopen($file, 'r');
$i = 0;

while ($line = fgetcsv($fh, 1000, "\t") !== false) {
  $cols[] = $line;

  if($i == 19) { break; }
    $i++;
  }

echo "<pre>";
print_r($cols); 
echo "</pre>";

Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 1
[4] => 1
[5] => 1
[6] => 1
[7] => 1
[8] => 1
[9] => 1
[10] => 1
[11] => 1
[12] => 1
[13] => 1
[14] => 1
[15] => 1
[16] => 1
[17] => 1
[18] => 1
[19] => 1
)

我尝试将\t更改为\n,但这并没有改变结果。如果我可以一步完成所有这一切,那么请检查行中的第二项,如果是一项,则将第一项(电子邮件)添加到数组中。否则不要。在这一点上,我将采取我能得到的!有什么想法或建议吗?


我现在正在获取数组中的项目,但它将列合并为一个数组项:

Array
(
[0] => Array
    (
        [0] => EMAIL    1
    )
)

我有没有办法将列吐出成单独的键?所以:

Array
(
[0] => Array
    (
        [0] => EMAIL
        [1] => 1
    )
)

1 个答案:

答案 0 :(得分:7)

您需要使用更多( )

包装while语句
while ($line = fgetcsv($fh, 1000, "\t") !== false) {

应该是

while (($line = fgetcsv($fh, 1000, "\t")) !== false) {
相关问题