使用PHP将每行CSV文件添加到数组中

时间:2013-02-23 04:28:47

标签: php arrays fopen fgetcsv

我几乎不好意思问这个,但我一直在努力完成这项任务几个小时。如果没有彻底掌握fopenfgetcsv函数,我有点迷失。我找到的每个例子都不适合我。

我正在寻找一种方法将CSV文件的每一行加载到一个数组中。例如,如果这是我的CSV文件:

Apple,Banana,Orange
Kiwi,Watermelon,Pineapple
Dog,Cat,Bird

然后这将是我的阵列:

Array
(
    [0] => Apple,Banana,Orange
    [1] => Kiwi,Watermelon,Pineapple
    [2] => Dog,Cat,Bird
)

我很感激任何提示。谢谢! :)


仅供参考,这是我到目前为止所做的:

$list = '../reports/apples.csv';

$csvfile = fopen($list,'rb');
while(!feof($csvfile)) {
$listofthings[] = fgetcsv($csvfile);
}
fclose($csvfile);

print_r($listofthings);

但是,当我只想拥有一个大数组时,这就产生了一个多维数组。

Array
(
    [0] => Array
        (
            [0] => Apple
            [1] => Banana
            [2] => Orange
        )

    [1] => Array
        (
            [0] => Kiwi
            [1] => Watermelon
            [2] => Pineapple
        )

    [2] => Array
        (
            [0] => Dog
            [1] => Cat
            [2] => Bird
        )
)

3 个答案:

答案 0 :(得分:2)

如果要按行分解文件,请使用file

$newArray = file('/path/to/file.csv');

如果您希望每个以逗号分隔的值作为数组的元素,请使用file_get_contents并以逗号分隔。

$contents = file_get_contents('/path/to/file.csv');
$newArray = explode(',', $contents); 

答案 1 :(得分:1)

您可以在阅读Nicholas建议的文件后explode,或者您可以使用file一次性完成所有操作:

$lines = file('/path/to/file.csv');

答案 2 :(得分:0)

正在寻找这个??

$mytext = "Apple,Banana,Orange
Kiwi,Watermelon,Pineapple
Dog,Cat,Bird";

$line_explode = explode("\n", $mytext);
$comma_explode = array();
foreach ($line_explode as $line) {
  $comma_explode[] = explode(",", $line);
}

print_r($comma_explode);

输出

Array
(
    [0] => Array
        (
            [0] => Apple
            [1] => Banana
            [2] => Orange
        )

    [1] => Array
        (
            [0] => Kiwi
            [1] => Watermelon
            [2] => Pineapple
        )

    [2] => Array
        (
            [0] => Dog
            [1] => Cat
            [2] => Bird
        )

)
相关问题