我是新来的,我正在尝试获取CSV的特定行,但实际上无法获得它,希望有人可以帮助我。
以下是我的CSV示例。
Aaron, Male, aaron@website.com
Arianne, Female, arianne@something.com
Bea, Female, bea@hello.com
Carlos, Male, carlos@website.com
Drake, Male, drake@website.com
Delilah, Female, del@hello.com
Erica, Female, erika@webisite.com
Flint, Male, flint@something.com
我想在我的档案中只显示从德雷克到埃里卡的一行。
以下是我的代码示例
<?php
echo "<html><body><table BORDER=1, WIDTH=1200px>\n\n";
$f = fopen("Senter code hereample.csv", "r");
while (($line = fgetcsv($f)) !== false){
echo "<tr>";
foreach ($line as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}`enter code here
fclose($f);
echo "\n</table></body></html>";
?>
答案 0 :(得分:1)
<?php
echo "<html><body><table BORDER=1, WIDTH=1200px>\n\n";
$f = fopen("file.csv", "r");
$i = 0;
while (($line = fgetcsv($f)) !== false){
$i ++;
echo "<tr>";
foreach ($line as $cell) {
if ($i==5 ||$i==6||$i==7)
echo "<td>".$i.' - '. htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
?>
经过测试和工作。
答案 1 :(得分:1)
在这个你要展示Drake,Delilah和Erica的具体例子中,你可以这样做:
$csv_lines = file('yourcsv.csv');
echo $csv_lines[4]; // Drake, Male, drake@website.com
echo $csv_lines[5]; // Delilah, Female, del@hello.com
echo $csv_lines[6]; // Erica, Female, erika@webisite.com
如果您的CSV是动态的,并且您想搜索这些名称而不是按照确切的行号引用它们,这可能是更好的方法,您可以执行以下操作:
$csv_lines = file('yourcsv.csv');
// Filter out anything that isn't the right first name
$csv_lines = array_filter($csv_lines, function($value) {
/// Split up the line and trim each result
$line_bits = array_map('trim', explode(',', $value));
// If the first name is in your array, return this value otherwise strip it
return in_array($line_bits[0], array('Drake', 'Delilah', 'Erica'));
});
然后返回数组转储:
Array
(
[4] => Drake, Male, drake@website.com
[5] => Delilah, Female, del@hello.com
[6] => Erica, Female, erika@webisite.com
)
注意:使用file()
是一种快速简便的方法,可以将文件读入数组,但如果您的文件很大,则不应该使用它作为整个文件需要在解析之前加载到内存中。在这种情况下它是合适的,但是应该逐行接近大量文件。
file()
在此示例中用新行代替explode()
。