尝试在PHP中将CSV行获取为二维数组

尝试在PHP中将CSV行获取为二维数组,php,arrays,csv,Php,Arrays,Csv,因此,我试图读取一个CSV,它有几行,将与用户输入进行比较。此输入是用户选择的id数组($talente)。id为的数组将被拆分,脚本打开CSV并读取与id相同的行。它工作得很好,但是逐行将CSV读取到另一个一维数组中。但是我需要这些线已经是一个数组了,这样我就可以在最后得到一个二维数组 到目前为止,我的脚本如下所示: <?php $talente = $_GET['talente']; $talentline = array(); $i = 0; $myFile = fopen("

因此,我试图读取一个CSV,它有几行,将与用户输入进行比较。此输入是用户选择的id数组($talente)。id为的数组将被拆分,脚本打开CSV并读取与id相同的行。它工作得很好,但是逐行将CSV读取到另一个一维数组中。但是我需要这些线已经是一个数组了,这样我就可以在最后得到一个二维数组

到目前为止,我的脚本如下所示:

<?php

$talente = $_GET['talente'];

$talentline = array();

$i = 0;
$myFile = fopen("talente.csv", "r");

foreach ($talente as $talent) {
    if ($talent == $i+1) {          
        while (($data = fgetcsv($myFile, 1000, ",")) !== FALSE) {

            $num = count($data);

                for ($c=0; $c < $num; $c++) {
                    $talentline[][] = $data[$c];
                }

        //$talentline[] = $lines[$i];

        }
        fclose($myFile);
    }
    $i++;

}

print_r(array_values($talentline));

/*echo $talentline[1];
echo $talentline[2];
*/
?>

这个怎么样?读取CSV一次以提高速度,然后使用和将CSV向下过滤到所需的行

<?php

$talente = $_GET['talente'];

$myFile = fopen("talente.csv", "r");
$csv = [];
while ($data = fgetcsv($myFile, 1000, ",")) {
    $csv[] = $data;
}
fclose($myFile);

$talentLine = array_filter($csv, function($key) use ($talente) {
    return in_array($key, $talente);
}, ARRAY_FILTER_USE_KEY);

print_r(array_values($talentline));

试试
fgetcsv()
?看看我尝试的第一件事,但它只是将行的元素放在一个数组中,而不是制作一个二维数组。最好提供您实际使用的代码
fgetcsv
,但它不起作用。这段代码毫无意义,因为它只是在每次迭代
$\u GET['talente']
时将csv文件读入数组。这里没有任何实际的比较。因此很难判断需要编辑哪些行为。这是迄今为止我来的最好的一次。谢谢!工作起来很有魅力!
<?php

$talente = $_GET['talente'];

$myFile = fopen("talente.csv", "r");
$csv = [];
while ($data = fgetcsv($myFile, 1000, ",")) {
    $csv[] = $data;
}
fclose($myFile);

$talentLine = array_filter($csv, function($key) use ($talente) {
    return in_array($key, $talente);
}, ARRAY_FILTER_USE_KEY);

print_r(array_values($talentline));