从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)]; 
+0

谢谢。同意不是最有效的方法。有没有循环提取记录的方法? – dmuk

使用上面这个代码后更改打印到

$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