文本文件中的多个随机行,不重复

时间:2014-04-14 15:37:06

标签: php for-loop random

下面的代码选择(不重复)来自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)相关联,以用于我的后续代码。

2 个答案:

答案 0 :(得分:0)

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

$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]);
}

答案 1 :(得分:0)

你的意图对我来说不太清楚......为什么不使用数组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

希望这会有所帮助......