3

私の目的は、CSV ファイルの列から取得される 3 つのランダムな単語からなる文を作成することです。

PHPに正しい列からのみ単語を選択させるのに問題があるため、列1には文の最初の単語、列2には中間の単語のみ、列3には最後の単語のみが含まれます。

CSV ファイルの例:

my;horse;runs
your;chicken;sits
our;dog;barks

出力の例:

My chicken barks. *reload*
Your horse sits. *reload*
Our dog runs.

これまでの私の努力:

<?php
$file = fopen('input.csv', 'r');
while (($line = fgetcsv($file, 1000, ";")) !== FALSE) {
  $x = array_rand($line);
  echo $line[$x] . "\n";
}
?>

事前に感謝し、これで強い初心者を許してください.

4

3 に答える 3

5

これにより、要求に応じてランダム化された文が得られます。

<?php
$file = fopen('input.csv', 'r');
// prepare token contained
$line = array();
// read csv file line by line
while (!feof($file))
    // fill single line into token container
    $line[] = fgetcsv($file, 1000, ";");
// construct a sentence by picking random words from columns
$sentence = sprintf("%s %s %s\n",
                    $line[rand(0,sizeof($line)-1)][0],
                    $line[rand(0,sizeof($line)-1)][1],
                    $line[rand(0,sizeof($line)-1)][2] );
// output sentence
echo $sentence;
?>

ただし、最初に csv ファイル全体をメモリに読み込むため、あまり効率的ではありません。そのため、小さな csv ファイル (数百行まで) でのみ実行されます。より大きなファイルの場合、最初にランダムな行番号を選択し、ファイルからその行のみを読み取ることを検討する必要があります。これを 3 回行うと、文を構成できる 3 つの単語が得られます。

于 2012-09-25T08:30:39.493 に答える
3

コード

<?php

$csv = "my;horse;runs
your;chicken;sits
our;dog;barks";

$lines = explode( "\n", $csv );

foreach( $lines as $line ) {
    echo ucfirst( str_replace( ";", " ", trim( $line ) ) ) . "<br />";
}

?>

出力

My horse runs
Your chicken sits
Our dog barks
于 2012-09-25T08:26:58.550 に答える
3

列を別々の配列にソートしてから、ランダムなインデックスを選択します。

<?php
    $file = fopen('input.csv', 'r');
    while (($line = fgetcsv($file, 1000, ";")) !== FALSE) {
        $column1[] = $line[0];
        $column2[] = $line[1];
        $column3[] = $line[2];
    }

    function pickWord($wordArray){
          $x = array_rand($wordArray);
          echo $wordArray[$x] . "\n";
    }

    pickWord($column1);
    pickWord($column2);
    pickWord($column3);
 ?> 

そんな感じ

于 2012-09-25T08:31:35.430 に答える