2016-09-21 5 views
1

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

<?php 
$names=file('name.txt'); 
$fileArray = array_values(array_filter($names, "trim")); 
$randomText = $fileArray[0]; 
$randomText .= $fileArray[1]; 
?> 
<h1>Test: <?php echo $randomText; ?></h1> 

name.txt

Alim 
Qureshi 

Test2 
TestTwo 

Test3 
TestThree 

Test4 
TestFour 

Test5 
TestFive 

Я хочу, чтобы отобразить строки в name.txt в случайном порядке, но сохранить наборы строк, как «test2 TestTwo» вместе с тем что они будут отображаться одновременно. Как я могу это сделать?

+0

Вы ищете 'array_rand()' ?! – Rizier123

+0

@ Rizier123 Да, но я не знаю, как добавить его в этот код:/Я пробовал, но у меня получилось HTTP ERROR 500, потому что я сделал это неправильно –

+0

Кажется, что вы можете сократить свои первые две строки кода до: '$ names = file (" name.txt ", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);' и затем вы можете разбивать массив на группы по 2, например '$ names = array_chunk ($ names, 2);'. После этого, как я уже сказал, вы получаете свой случайный ключ с 'array_rand()', например. '$ key = array_rand ($ names);'. В конце просто распечатайте случайный результат: 'echo implode («
», $ names [$ key]);' – Rizier123

ответ

2

После того, как вы получите свои значения в массиве, вы можете использовать array_chunk, чтобы разделить его на две подэлементы, чтобы две части, которые вы хотите, могли оставаться вместе, когда они рандомизированы. Тогда только shuffle он перед вами выдает.

$names = file('name.txt'); 
$fileArray = array_values(array_filter($names, "trim")); 
$fileArray = array_chunk($fileArray, 2); 
shuffle($fileArray); 

foreach ($fileArray as $chunk) { 
    $randomText = $chunk[0]; 
    $randomText .= $chunk[1]; 
    echo $randomText . '<br>'; 
} 
0

Вот два способа использования array_chunk() так, что два пребывания совпадений:

$names = array_chunk($names, 2); 
$rand = $names[array_rand($names)]; 
echo $rand[0] . $rand[1]; 

Или:

$names = array_chunk($names, 2); 
shuffle($names); 
echo $names[0][0] . $names[0][1]; 
Смежные вопросы