【问题标题】:Multiple random lines from text file without repetitions文本文件中的多个随机行,不重复
【发布时间】:2014-04-14 15:37:06
【问题描述】:

下面的代码从 txt 文件中选择(不重复)随机行。

$filename = "randomlines.txt"; 
$how_many_to_show = 10; 
if ($random = file($filename)) { 
 shuffle($random); 
 for ($i = 0; $i < $how_many_to_show; $i++) { 
  $color[$i]=$random[$i]; 
 } 
} else { 
 die('Could not get contents of: ' . $filename); 
} 

它工作正常。当我输入以下字符串时

    print($fileContents[$i]. '<br />');

代替这个

$color=$random[$i]; 

我在我的屏幕上看到 10 条不同的线,从 randomlines.txt 中提取

但是,我需要将每个不同的随机行与 10 个不同的变量(例如 $color1、$color2....$color10)关联起来,以供后续代码使用。

【问题讨论】:

  • 你的解释很难理解。
  • 我尝试以不同的方式编写文本。那样可以么?对不起我的英语不好:)

标签: php for-loop random


【解决方案1】:

你的意图对我来说不是很清楚......为什么不使用数组colors,而不是单个变量? 使用单个数组很简单:

$color[$i] = $random[$i];

如果你真的想使用单个变量,你可以这样做:

${"color" . $i} = $random[$i];

例如代码

<?php 
    $random[0] = 'red';
    $random[1] = 'blue';
    $random[2] = 'green';

    for ($i = 0; $i < 3; $i++) {
      ${"color" . $i} = $random[$i];
    }

    print $color0 . "\n";
    print $color1 . "\n";
    print $color2 . "\n";
?>

生产:

red
blue
green

希望这会有所帮助...

【讨论】:

  • 我解释得更好:for循环从一个名为randomlines.txt的txt文件中选择一个随机行在代码中我设置了$how_many_to_show = 10所以我需要10个不同的$variables在下一个代码中使用有 10 个不同的值: $color1... color10 每个都应该有不同的颜色 #CEFECC... #FFA117 从 randomlines.txt 的行中挑选出来 :)
  • 谢谢!我添加了您建议的代码行 ${"color" . $i} = $random[$i]; 并解决了我的问题。 :)
【解决方案2】:

我会创建一个数组数组,如下所示:

$lines = array(
  array(
    'color' => '#f00',
    'line' => 'First random line.'
  ),
  array(
    'color' => '#ff0',
    'line' => 'Second random line.'
  ),
);

这是我想出的代码,未经测试:

$lines = file('randomlines.txt');
$colors = array('red', 'orange', 'yellow', 'blue', 'green');

shuffle($lines);
shuffle($colors);

$output = array();

for($i = 0; $i < 5; $i++ ) {
  $output[] = array('line' => $lines[$i], 'color' => $colors[$i]);
}

【讨论】:

  • 我解释得更好:for循环从一个名为randomlines.txt的txt文件中选择一个随机行在代码中我设置了$how_many_to_show = 10所以我需要10个不同的$variables在下一个代码中使用有 10 个不同的值: $color1... color10 每个都应该有不同的颜色 #CEFECC... #FFA117 从 randomlines.txt 的行中挑选出来 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 2018-03-26
  • 2020-01-16
  • 1970-01-01
相关资源
最近更新 更多