我有一个简单的PHP脚本,它读取CSV文件并从中生成一个数组:
<?php
$file = fopen('food.csv', 'r');
$allfile = [];
$idsColumnsWanted = array(0,1,16);
while (($line = fgetcsv($file)) !== FALSE) {
$i = 0;
foreach ($line as $i => $cell) {
if (!in_array($i, $idsColumnsWanted)) {
continue;
}
$allfile[] = $line;
$i++;
}
}
fclose($file);
?>
我想只显示第0,1和0列中的数据。 16。
我上面尝试过,但它仍然会输出整个CSV。
答案 0 :(得分:1)
您可以使用array_intersect_key
:
$file = fopen('food.csv', 'r');
$allfile = [];
$idsColumnsWanted = array_flip([0, 1, 16]);
while (false !== $fields = fgetcsv($file)) {
$allfile[] = array_intersect_key($fields, $idsColumnsWanted);
}
fclose($file);
注意:如果您不想将列号保留为结果数组中的键,请使用array_values(array_intersect_key(...))
。