2012-01-26 132 views
1

我有一個包含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); 
?> 

回答

0

效率不高,但是然後你可以在循環

echo $p[array_rand($p)]; 
+0

謝謝。同意不是最有效的方法。有沒有循環提取記錄的方法? – dmuk

1

使用上面這個代碼後更改打印到

$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