将csv文件读入数组并跳过PHP的第一行

时间:2017-06-21 06:23:08

标签: php arrays csv

我有一个CSV文件,前两列是标题

'Student','ID','SIS User ID' 
Points Possible      
Ashe,   797389, 11721809
Darius,  20237, 55050811
Fizz,    34604, 55035088
Tom Kenn,20232, 55050802
Vayne,  797413, 11813445

对于前两列,不应将它们添加到数组中。 从阿什开始,我想将Ashe, 797389, 11721809行添加到array[0] 大流士到array[1],......

我按如下方式编写代码:

<?php
$csvData = file_get_contents('output.csv');
$lines = explode(PHP_EOL, $csvData);
$array = array();
foreach ($lines as $line) {
    $array[] = str_getcsv($line);
}
print_r($array[2][5]);
?> 

为了跳过前两行,我该怎么做?

解决问题后,有一个空数组。如何消除空数组?

[797413] => Array
    (
        [0] => Vayne
        [1] => 797413
        [2] => 11813445
        [3] => lsmdec
        [4] => cs3487
        [5] => 12.15
        [6] => 15
        [7] => 5
        [8] => 17
        [9] => 49.15
        [10] => 49.15
        [11] => 49.15
        [12] => 49.15
        [13] => 49.15
        [14] => 49.15
        [15] => 49.15
        [16] => 49.15
        [17] => C-
        [18] => C-
    )

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

2 个答案:

答案 0 :(得分:4)

您可以从数组中删除第一个元素并将其保存在安全的位置以供以后使用,如下所示:

<?php
$csvData = file_get_contents('output.csv');
$lines = explode(PHP_EOL, $csvData);
$array = array();
$first_row = array_shift($lines);
foreach ($lines as $line) {
    $newLine = str_getcsv($line);
    if(isset($newLine[0]) && !empty($newLine[0])){
        $array[] = str_getcsv($line);
    }
}
print_r($array[2][5]);

?> 

这会将数组的第一个元素放入$first_row并将其从$lines中删除; 如果您需要跳过第一行以上的内容,则可以堆叠array_shift()方法以删除第一行两次。

答案 1 :(得分:0)

    $csvData = file_get_contents('output.csv');
    $lines = explode(PHP_EOL, $csvData);
    $array = array();
    foreach ($lines as $key => $line) {            
        if ($key !== 0) {
            $array[] = str_getcsv($line);
        }
    }
    echo '<pre>';
    print_r($array);
    die;

现在您可以检查数组值,否则您也可以移动第一个数组,您可以使用array_shift函数