2012-01-26 2 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[]= ... 

에 인쇄를 바꿀 수는 잠재적으로 특정 행을 표시 수정할 수있는 방법입니다 및 열. @ Daagon이 그의 게시물에서 언급했듯이 임의의 항목에 대해서는 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

관련 문제