如何在保持元素组合在一起的同时随机化数组?

时间:2016-09-21 15:51:41

标签: php arrays

我想知道如何随机显示这两个数组值。我试图随机但失败了。这是我的文件:

<?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”之类的字符串集保存在一起,以便它们同时显示。我怎么能这样做?

2 个答案:

答案 0 :(得分: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>';
}

答案 1 :(得分: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];