Php 如何从CSV列创建句子
我的目标是创建一个由三个随机单词组成的句子,这些单词取自CSV文件的列 我很难让PHP只从正确的列中选择单词,因此第一列包含句子中第一个单词,第二列只包含中间单词,第三列只包含最后一个单词 CSV文件示例:Php 如何从CSV列创建句子,php,csv,input,Php,Csv,Input,我的目标是创建一个由三个随机单词组成的句子,这些单词取自CSV文件的列 我很难让PHP只从正确的列中选择单词,因此第一列包含句子中第一个单词,第二列只包含中间单词,第三列只包含最后一个单词 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.c
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";
}
?>
输出示例:
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";
}
?>
我迄今为止的努力:
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";
}
?>
请提前感谢,并原谅这件事带来的巨大麻烦。代码
<?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 />";
}
?>
这将根据要求提供随机句子:
<?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文件上执行(最多数百行)。对于较大的文件,您应该首先考虑随机行数,然后只从文件中读取该行。这样做三次会给你三个词,你可以从中删去你的句子 我会将列排序为单独的数组,然后选择一个随机索引
<?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);
?>
类似这样的情况您是否试图对其进行编码以使其不重复,或者是否可以从数组中多次使用相同的值?也就是说,如果在一个句子中使用了
dog
,那么在另一个句子中是否可以再次随机使用它?@Fluffeh这些词可以重复使用。我们的目标是每页/重新加载周期只写一句这样的句子。@HarroldCavendish有任何答案对你有用吗?@TheoKouzelis是的,事实上我不能决定接受哪一个,所以我把所有答案都投了赞成票,然后由其他人决定接受最受欢迎的答案。我在用你的,非常感谢!非常感谢你!我决定用这个。非常感谢你的帮助!非常感谢你的帮助!