2014-12-22 4 views
0

Im пытается отобразить 2 или более уникальных случайных результата из текстового файла, как мне это сделать?Как показать случайные результаты в PHP

Но мне нужны уникальные результаты, а не 2 или более одинаковых.

В настоящее время с помощью этого кода, но он возвращает только 1 случайный результат:

<?php 
$text = file_get_contents('flatFileDB.txt'); 
$textArray = explode("\n", $text); 
$randArrayIndexNum = array_rand($textArray); 
$randPhrase = $textArray[$randArrayIndexNum]; 
?> 
<?php echo $randPhrase ?> 
+0

Используйте тот же пойти получить другой случайный номер, а затем проверить, оно должно отличаться от первого, если его нет, то сделать то же самое снова – MTahir

+0

В этом, это не так уж трудно. вы похожи на 99% пути. используйте эти булевы и очень простой цикл (или, знаете ли, просто сделайте это дважды и назначьте другое имя вместо того, чтобы помещать его в массив размера ... 1.). – easymoden00b

ответ

2

я хотел бы использовать что-то вроде этого

shuffle($textArray); 
    echo $textArray[0]; 
    echo $textArray[1]; 

http://php.net/manual/tr/function.shuffle.php

+1

Простое и элегантное решение, которое не больше и не меньше, чем просили. – Szandor

+0

Да, это сработало! Большое спасибо! –

0

Вы можете дать выстрел к этому также , Код не проверен. Я собираю использованное в массив и проверяю, что используется раньше.

$text = file_get_contents('flatFileDB.txt'); 
$textArray = explode("\n", $text); 
$used = array(); 
$countOfRandoms = 2; 
$randoms = array(); 
$i = 1; 
do { 
    if ($countOfRandoms == $i) { 
     break; 
    } 
    $randArrayIndexNum = array_rand($textArray); 
    if (in_array($randArrayIndexNum, $used)) { 
     continue; 
    } 
    $used[] = $randArrayIndexNum; 
    $random = $textArray[$randArrayIndexNum]; 
    $i++; 
} while (true); 
+0

Да, это сработало! Большое спасибо! –

Смежные вопросы