尝试在PHP中将CSV行获取为二维数组
因此,我试图读取一个CSV,它有几行,将与用户输入进行比较。此输入是用户选择的id数组($talente)。id为的数组将被拆分,脚本打开CSV并读取与id相同的行。它工作得很好,但是逐行将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("
<?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));