2012-01-26 12 views
1

私は6列を含むcsvファイルを持っています。 1つのレコード(行全体ではなく)をランダムにWebページに戻したいと思います。たとえば、5行目から1と4を返します。csvからランダムなレコードを出力していますか?

以下のコードは、ファイル全体(1列目、2列目、3列目)を返します。私は1つの行が返されるだけです。このコードを修正して1つのレコードを元に戻すにはどうすればよいですか?

<?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

関連する問題