1

フォームから csv ファイルをアップロードする必要があります。私ができること。csv ファイルには、コンテストに参加した人々の名前と電子メールが含まれています。コンテストの勝者を取得するには、php でファイルを読み取り、行をランダム化し、行全体を出力する必要があります。

ここでスタックオーバーフローで見つけた次のコードを試してみましたが、ランダムな行から1列しか出力しません。行全体を出力する必要があり、3 つの行が必要です。何を試しても、このコードでそれを行うことはできません:

<?php

if (!isset($_FILES)){exit;}
$file = $_FILES['file'];

$file_handle = fopen($file['tmp_name'], "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]);


//Random row, with all three columns
$column = 1;
$column = 2;
$column = 3;


echo $line_of_text[$random_row][$column-1][$column-2][$column-3];

?>

列 2 と 3 を削除すると、列 1 が出力されますが、3 つの列すべて、行全体が必要です。また、3 つのランダムな行を取得して、各行を 1 行に出力したいと考えています。

4

2 に答える 2

0

$line_of_text[$random_row]この場合は配列です。その構造を正しく理解していると仮定すると、次の手順を実行することで、3 つの列すべてを簡単に取得できます。

echo $line_of_text[$random_row][$column-1] . $line_of_text[$random_row][$column-2] . $line_of_text[$random_row][$column-3];

これにより、3 つの配列値の値が連結されます。スペースで区切りたい場合は、.を a. ' ' .などに置き換えてください。

于 2013-03-13T01:13:50.530 に答える
0

ありがとう、連結がうまくいきました!何らかの理由で、列 3、次に 2、次に 1 の順序を変更する必要がありました。しかし、それは私が望む結果をもたらします。

于 2013-04-02T00:10:07.637 に答える