从csv输出一个随机记录?
问题描述:
我有一个包含6列的csv文件。我想随机返回一条记录(不是整行)到我的网页中。例如,从第5行返回第1列和第4列。从csv输出一个随机记录?
以下代码返回整个文件(第1,2,3列)。我只想要返回一行。如何修改此代码以恢复一条记录?
<?PHP
$csvfile = "table.csv";
$file_handle = fopen($csvfile, "r");
while (!feof($file_handle)) {
$line_of_text = fgetcsv($file_handle, 1024);
print $line_of_text[0] . $line_of_text[1]. $line_of_text[2] . "<BR>";
}
fclose($file_handle);
?>
答
效率不高,但是然后你可以在循环
echo $p[array_rand($p)];
答
使用上面这个代码后更改打印到
$p[]= ...
是你怎么可能修改它来显示特定的行和列。正如@Dagon在他的文章中提到的,你可以使用array_rand作为随机条目(见下文)。如果你愿意,你也可以在数组中指定行和列的位置。
<?php
$csvfile = "table.csv";
$file_handle = fopen($csvfile, "r");
$line_of_text = array();
while (!feof($file_handle)) {
$line_of_text[] = fgetcsv($file_handle, 1024);
}
fclose($file_handle);
// Random Row and Column
$random_row = array_rand($line_of_text);
$random_column = array_rand($line_of_text[$random_row]);
echo $line_of_text[$random_row][$random_column];
//Specified Row 5 Column 1
$row = 5;
$column = 1;
echo $line_of_text[$row-1][$column-1];
?>
+0
谢谢。也许这需要SQL更有效地运行? – dmuk
谢谢。同意不是最有效的方法。有没有循环提取记录的方法? – dmuk